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
Estoy intentando agrupar el mensaje de identificación por lo que no devuelven los resultados de búsqueda duplicados, pero por alguna razón hay duplicados, incluso cuando se utiliza la GROUP BY p.id
. ¿Puede alguien decirme qué estoy haciendo mal?MySQL - Búsqueda con UNION ALL y GROUP BY
No sólo desea un resultado por p.id, independientemente de search_type? –
Hey Mark, no, quería todos los resultados. El tipo de búsqueda solo me permite definir de dónde vino ese resultado de búsqueda (publicación, etiqueta o categoría). – Torez