İki tablo var. Bir items
, ve bir tags
olduğunu. Sorgu en here.
Fikir öğeleri arama ve ardından etiketleri seçerek aramanızı daraltmak için bir arama kutusu oluşturmaktır. (Yönlü arama çeşit).
Mysql öğreticiler etrafında işe yaramaz sonra ben bu ile geldi:
SELECT `items`.`id`, `items`.`name`, `items`.`pay`, `items`.`desc`
FROM `items`LEFT JOIN (`tags`) ON (`tags`.`item_id`=`items`.`id`)
WHERE (
(`tags`.`type`='food' AND `tags`.`name`='pizza')
OR (`tags`.`type`='drinks' AND `tags`.`name`='lemonade')
--And so on for every tag
)
ORDER BY `pay` DESC LIMIT 0 , 30
(Şu anda önemli değildir çünkü sorguda tam metin araması kaldırıldı)
Bu oldukça iyi çalışıyor, ama iki sorun var:
- Kullanıcı herhangi etiketlerini seçmezse, ona bağlı daha sonra 1 etiketi olan her madde daha sonra 1 süresini gösterir
- Kullanıcı iki etiketleri, gıda => pizza ve içecekler seçerse =>, pizza ya da limonata ya da her ikisi kadar gösterecektir her öğe, ben sadece ona bağlı İKİ bu etiketleri var öğeleri örnek limonata istiyorum.
Farklı bir mysql sorgusu ile bu sorunları çözmek mümkün mü? Yoksa php kodu bu sorunları düzeltmek gerekir. (Yoksa bu tamamen yanlış yapıyor, ve etiketlerini kullanmak çok daha iyi bir yolu var mı ki?)
Umarım kendimi açıkça.
, Gr
Bas