Ben öğeleri, etiketleri masa ve bu iki (çok-çok) bağlayan bir tablo bir tablo var.
Fields of each table:
items:
id_item INT
tags:
id_tag INT
item_tag:
id_item INT
id_tag INT
Şimdi her öğe, bir veya daha fazla etiket olabilir. Ben belirtilen etiketleri içeren sadece bu öğeleri seçmek bir etiket tabanlı arama yapmak istiyorum. Ben etiketleri ile öğe varsa ararken Yani FLASH (id=1), PHP(id=2), MYSQL(id=3), RAGE(id=4)
Ben bulabilirsiniz:
FLASH, [1] (This is an array of tag ID's)
FLASH + PHP, [1,2]
MYSQL + PHP + RAGE, [3,2,4]
PHP + FLASH + MYSQL + RAGE [2,1,3,4]
ama ben, örneğin, arıyorum zaman bulunabilir alınmalıdır:
ACTIONSCRIPT, [8]
PHP + ACTIONSCRIPT, [2,8]
Ben basit SOL IN (...) ile JOIN kullanarak düşündüm ama sonra ben ... Herhangi bir ipucu işe yaramayacağını fark? Elle PHP veri ayrıştırma olmadan Mysql sorgusu ile sadece yapılabilir mi?
UPDATE:
Brad Christie tarafından dikkate cevap dikkate alındığında, burada soru soruluyor örnek bir sorgu:
SELECT t1.some_field, GROUP_CONCAT(t2.id_tag ORDER BY t2.id_tag) AS tagList FROM items t1
LEFT JOIN item_tag t2 ON t1.id_item = t2.id_item
WHERE HERE_LIES_THE_PROBLEM
Şimdi, biz burada HERE_LIES_THE_PROBLEM X, sunulan elemanlar tagList ise denetleyen bir işlev olmalıdır. Bu yüzden tagList "1,2,3,4" ve X "1,2" çalışması gerekir, ancak eğer X (1 ise, 2,5) bu olmamalıdır. Bu düşeni yapmak nasıl?