(PHP / MySQL) Bana bu işleri söyleyerek önsöz olsun, ve temiz bir yolu olup olmadığını merak ediyorum ki. Bu biraz ... hayvani görünüyor? Ve benim verimli bir kodlama için bilinen değilim. :-/
TABLE (many-to-many)
scenid mapid
AA 01
AA 02
AA 04
BB 01
BB 04
CC 02
CC 03
CC 05
DD 01
DD 02
DD 03
You are searching for scenarios that have ALL of these maps: 01, 02, 03
(having all + some others is ok)
Benim geçerli yöntemi, bu sorguyu kullanmak için:
SELECT scenid, COUNT(scenid) FROM `TABLE`
WHERE mapid IN ( 01, 02, 03 )
GROUP BY scenid ORDER BY COUNT(scenid) DESC, scenid ASC
Bu listeyi üretecek Hangi:
scenid COUNT
DD 3
AA 2
CC 2
BB 1
Sonra, içinde PHP, bir while
döngü çalıştırmak bu kadar uzun COUNT
mapids ve ==
toplam sayısı (hala olduğu gibi, yeni bir diziye kopyalar scenids Bu durumda, 3). Bu sadece bazı gerekli haritaları içeren tüm sonuçları kapalı kırpar.
Yine, this works. Ama yine MySQL ve çok yeniyim Benim "works" başka bir kişinin olup olmadığını PHP (ve programlama içine benim ilk adım sensin) bu yüzden hep merak ediyorum "did you see that idiot just reinvent the wheel? lulz strong>"
Daha iyi bir yolu var mı? Zaman ayırdığınız için teşekkür ederiz.