(SOLVED, SEE END)
Ben aşağıdaki için PHP veya MySQL kod yapısı üzerinde ipuçları gerekir:
Diyelim ki X benzersiz kutuları var diyelim, ve Y çeşitleri meyve. Her kutu meyve her tür birini içerebilir. Bazı kutuları sadece 2 tip olabilir, bazıları her tür olabilir. Tüm kutular en az bir türü var.
Sorgu için, kullanıcı onay kutularını, meyve her tür için tek bir listesi vardır. (Ben bu hepsi aynı sorgu diziye beslemek varsayıyorum?)
Benim sorun burada başlıyor:
Eğer bir kullanıcı kontrolleri
elma, portakal ve üzüm
nasıl aşağıdaki döndürecek bir sorgu oluşturmak yapın:
Box01 (apples, oranges)
Box02 (grapes)
Box03 (apples, oranges, grapes)
ama değil:
Box04 (elma, portakal, üzüm, armut, muz)
Nasıl $ meyve Verilen bütün değerleri [] veya daha az içeren kayıtlar için döner sınırı, ancak istenen değerler mevcut değil, başka değerleri bile yok? Ayrıca, sorgu bu tür ben ileride kullanabileceğiniz özel bir isim var mı?
Bu benim için gerçek bir zor biridir ve ben zaman için teşekkür ederiz.
- A
(PS -. Eğer sadece kavramı göstermek oldu, böyle çıktı ya da bir şey biçimlendirme konusunda endişelenmenize gerek yok ben kesinlikle sorgu kod ilgileniyorum.)
EDIT - iki istedi, belirli dbase detaya gitmiyor için üzgünüm. 3 tablolar var: Her kutuyu, her meyve açıklayan birini açıklayan bir ve 2 sütun ile bir çok-çok tablo - boxids & fruitids. Ben hem zaten kabul buydu inanıyorum.
Herkese teşekkür ederim!
MY SOLUTION
ANAX kod aşağıda bana boyunca yardım, burada yapıyor sona budur:
table "box" has columns "boxid" (primary key) & "box description" table "fruit" has columns "fruitid" (primary key) & "fruit description" table "box_has" has columns "boxid" & "fruitid"
SELECT boxid FROM box WHERE
boxid NOT IN (
SELECT boxid FROM box_has WHERE fruitid NOT IN ('F01' , 'F02'))
Ön arka koduna bakarak, içteki SEÇME istediğimiz VE başkalarının ne zahmetli kutuları hariç, istediğimiz dışındaki tüm meyve kutuları bulur.
Seçmek Dış sonra her sadece seçilen meyvenin herhangi birini içeren tekrarlar olmadan bireysel kutuları temiz bir getiri elde etmek için, bir kez görünür BOXID hangi kutu tablosunu kullanır.
Yardımın için teşekkür ederim, herkes!