Mam nastepujace tabele(przedstawiam pola kluczowe):
gracze(idGracza)
budynki(idBudynku)
bgraczy(idBG,idGracza,idBudynku) - jakie budynki posiada dany gracz
wymbud(idWB,idBudynku,idBudynkuWym) - jakie sa wymagania danego budynku(id budynki ktory chcemy zbudowac i id budynku ktory jest wymagany)
Chce wybrac wszystkie budynki, ktore moze wybudowac konkretny gracz.
Probowalem w ten sposob:
SELECT budynki.*, gracze.nick FROM gracze INNER JOIN (budynki INNER JOIN (wymbud INNER JOIN bgraczy ON wymbud.idBudynkuWym = bgraczy.idBudynku) ON budynki.idBudynku = wymbud.idBudynku) ON gracze.idGracza = bgraczy.idGracza WHERE (((gracze.nick)="jakis nick"));
Jednak zwraca to mi budynki, ktore gracz juz posiada(to nie jest duzy problem) oraz budynki, ktorych conajmniej 1 wymaganie jest spelnione(a nie wszystkie, budynek moze wymagac np. 5 innych).
Z gory dziekuje za pomoc
Pozdrawiam
Michał Malus
----edit----
Proszę używać odpowiedniego bbCode. W tym przypadku [ sql ]
~mike_mech
Doszedlem do takich trzech kwerend:
budyki_gracza_x:
SELECT budynki.* FROM gracze INNER JOIN (budynki INNER JOIN bgraczy ON budynki.idBudynku = bgraczy.idBudynku) ON gracze.idGracza = bgraczy.idGracza WHERE gracze.nick="jakis gracz";
wymagania_budynku_x:
SELECT budynki.* FROM budynki INNER JOIN wymbud ON budynki.idBudynku = wymbud.idBudynkuWym WHERE wymbud.idBudynku=jakisNr;
budynki ktore trzeba wybudowac, aby moc zbudowac dany budynek(jezeli puste to ok):
SELECT wymagania_budynku_x.nazwa FROM wymagania_budynku_x LEFT JOIN budyki_gracza_x ON wymagania_budynku_x.idBudynku = budyki_gracza_x.idBudynku WHERE (((budyki_gracza_x.shortnazwa) IS NULL));
Tylko teraz nie wiem jak je polaczyc.