SELECT p.id, p.title, p.uri, 'post' AS search_type
FROM `posts` AS p
WHERE title LIKE "%logo%"
UNION ALL
SELECT p.id, p.title, p.uri, 'tag' AS search_type
FROM posts AS p
INNER JOIN post_tags AS pt ON pt.post_id = p.id
INNER JOIN tags AS t ON pt.tag_id = t.id
WHERE t.title LIKE "%logo%"
UNION ALL
SELECT p.id, p.title, p.uri, 'category' AS search_type
FROM posts AS p
INNER JOIN post_categories AS pc ON pc.post_id = p.id
INNER JOIN categories AS c ON pc.category_id = c.id
WHERE c.title LIKE "%logo%"
GROUP BY p.id
LIMIT 30
Я пытаюсь сгруппировать идентификаторы постов, чтобы не возвращать дубликаты результатов поиска, но по какой-то причине есть дубликаты, даже когда я использую GROUP BY p.id
. Может кто-нибудь сказать мне, что я делаю не так?