Привет, я почти делал это, но мне нужно изменить важную вещь, но у меня нет идеи ее восстановить. Есть мой пример SQLПроверьте, не существуют ли значения с предложением WHERE IN - MYSQL
SELECT post.id,post.name as post_name,
(SELECT users.login FROM users WHERE post.creator = users.id) creator,
(SELECT COUNT(*) FROM recommends WHERE recommends.idea_id = post.id) recommends,
(SELECT COUNT(*) FROM comments WHERE comments.idea_id = post.id) comments,
GROUP_CONCAT(tags.tag SEPARATOR ',') as tags
FROM posts
LEFT JOIN tags
ON post.id = tags.idea_id
WHERE post.name IN
(
SELECT post.name FROM posts
JOIN tags ON post.id = post.idea_id
WHERE tags.tag IN ('X','Y','Z')
)
GROUP BY post.name
В чем проблема? Если наш X или Y или Z не существует, запрос все еще работает. Я не знаю, как отремонтировать, я попробовал некоторые НЕ СУЩЕСТВУЮЩИЕ предложения или НЕ ЭТО, но он не работает. Спасибо за помощь.
Что именно вы ищете? Ваш запрос имеет смысл, ища сообщения с одним из тегов, хотя запрос слишком сложный. –
Если вам нравится, подумайте о следующем простом двухэтапном курсе действий: 1. Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, который соответствует информации, предоставленной на шаге 1. – Strawberry
Да, но если один из этих тегов из ('X', 'Y', 'Z'), например не существует из тегов сообщений, тогда результат является ложным, несмотря на то, что остальные существуют. –