טבלת המוצרים
+-------------+-------
| id | title | cost |
+-----+------------+--
טבלת התגים
+-------------+-------------
| id | tag_name | item_id |
+-----+------------+--------
העמודה item_id זה מפתח זר של המוצר, לכל מוצר יש כמה תגיות.
אם אני רוצה לשלוף מוצר עם כל התגיות שלו, אני עושה JOIN
SELECT items.*, GROUP_CONCAT(items_tags.name, ',') as tags
FROM items
LEFT JOIN items_tags ON items_tags.item_id = items.id
WHERE items.id = 55
GROUP BY items.id
ומקבל את כל התגיות תחת השדה tags
הבעיה מתחילה אם אני רוצה לשלוף כל מוצר שמכיל את תגית מסויימת
אם אני עושה כך
SELECT items.*, GROUP_CONCAT(items_tags.name, ',') as tags
FROM items
LEFT JOIN items_tags ON items_tags.item_id = items.id
WHERE items.tags = 'computer'
GROUP BY items.id
זה שולף את כל המוצרים, אבל זה לא מביא את כל התגיות שלהם, זה מחזיר רק את התגית computer בגלל ה WHERE
אבל אני רוצה שרק הסינון יתבצע לפי התגית, ושיחזיר לי את כל התגיות שמשוייכות למוצר
איך עושים את זה?