Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z SELECTem, Kwerendy SQL
piratt
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


Witam

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:

  1. SELECT budynki.*, gracze.nick
  2. 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
  3. 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:
  1. SELECT budynki.*
  2. FROM gracze INNER JOIN (budynki INNER JOIN bgraczy ON budynki.idBudynku = bgraczy.idBudynku) ON gracze.idGracza = bgraczy.idGracza
  3. WHERE gracze.nick="jakis gracz";


wymagania_budynku_x:
  1. SELECT budynki.*
  2. FROM budynki INNER JOIN wymbud ON budynki.idBudynku = wymbud.idBudynkuWym
  3. WHERE wymbud.idBudynku=jakisNr;


budynki ktore trzeba wybudowac, aby moc zbudowac dany budynek(jezeli puste to ok):
  1. SELECT wymagania_budynku_x.nazwa
  2. FROM wymagania_budynku_x LEFT JOIN budyki_gracza_x ON wymagania_budynku_x.idBudynku = budyki_gracza_x.idBudynku
  3. WHERE (((budyki_gracza_x.shortnazwa) IS NULL));


Tylko teraz nie wiem jak je polaczyc.

Ten post edytował piratt 30.09.2005, 16:08:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:05