Есть ли способ определить, какие данные были выбраны с помощью оператора SQL

У меня есть заявление SQL:

$feed=$conn->prepare("SELECT * FROM posts WHERE post_by=? OR id=? ORDER BY id DESC LIMIT 10");
$feed->bind_param("ii",$friend['id'],$like[id]);
$feed->execute();

$friend['id'] это идентификатор друга пользователя, $like[id] это идентификатор пользователя друга.

Сообщения, полученные по этому запросу, появляются на странице.

Я хочу знать, какие сообщения были опубликованы друзьями пользователя (какие сообщения были получены с помощью $friends['id']) и которые все посты понравились друзьям пользователя и появляются в ленте (какие все посты были получены с помощью $like['id'])

Я хочу знать все возможности, которые я могу попытаться достичь того, чего я хочу.

Я пытался изменить свой запрос с UNION ALL но это показывает ошибки, и я не могу достичь того, что я хочу.

В настоящее время ошибок нет, но я хочу, чтобы пользователь знал, как этот пост появился в ленте новостей.

Надеюсь, вы все получите хорошее представление о моем вопросе, и все типы хаков также будут приняты, так как я хочу каким-то образом добиться результата, я также согласился бы изменить характер запроса mt.

Пожалуйста, прокомментируйте для получения дополнительной информации.

Заранее спасибо.

1

Решение

SELECT *, post_by = ?postId AS post_by_friend
FROM posts
WHERE post_by = ?postId OR
id = ?friendId
ORDER BY id DESC
LIMIT 10

post_by_friend будет 1, если оно соответствует первому условию, иначе 0. Я не тестировал его, но этот метод должен быть быстрее, чем StuartLC UNION предложение.

1

Другие решения

Что вы можете сделать, это разбить запрос по его предложению ‘OR’ на UNION из двух отдельных запросов и добавить столбец маркера, чтобы указать, была ли строка найдена friend или like:

SELECT *
FROM
(
SELECT *, 'Friend' AS HowFound
FROM posts
WHERE post_by= ?postId

UNION

SELECT *, 'Like' AS HowFound
FROM posts
WHERE id= ?friendId AND post_by <> ?postId
) x
ORDER BY id DESC
LIMIT 10;

Вы хотите исключить строки, которые соответствуют обоим friend и пост classifications от одного из выбранных, в противном случае о нем будет сообщено дважды (или, в противном случае, ваше приложение должно будет объединить их).

Я не гуру PHP, но я уверен, что есть способ назвать параметры, чтобы разрешить вышеуказанное исключение.

Производная таблица необходима для упорядочения и ограничения общего результата.

0

По вопросам рекламы [email protected]