У меня есть заявление 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.
Пожалуйста, прокомментируйте для получения дополнительной информации.
Заранее спасибо.
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
предложение.
Что вы можете сделать, это разбить запрос по его предложению ‘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, но я уверен, что есть способ назвать параметры, чтобы разрешить вышеуказанное исключение.
Производная таблица необходима для упорядочения и ограничения общего результата.