在sql

时间:2015-05-27 14:18:17

标签: sql

所以我有5张桌子:

dane_osobowe:
(PK) id
imie

druzyna:
(PK) id
nazwa

gracz:
(PK) id
(FK) dane_osobowe
(FK) pozycja

kontrakt:
(PK) id
(FK) gracz
(FK) druzyna

pozycja:
(PK) id
nazwa

我如何选择所有" gracz"来自druzyna" 1"有" pozycja" 2? 我试过这样的事情:

SELECT * 
   FROM gracz AS gr 
INNER JOIN kontrakt AS kg
   ON gr.ID = kg.Gracz
INNER JOIN Druzyna AS d
   ON kg.Druzyna = d.ID
      WHERE d.ID = 1
INNER JOIN pozycja as poz
   ON poz.id = gracz.pozycja
      WHERE gracz.pozycja = 2

但它不起作用:/有人知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT * 
   FROM gracz AS gr 
INNER JOIN kontrakt AS kg
   ON gr.ID = kg.Gracz
INNER JOIN Druzyna AS d
   ON kg.Druzyna = d.ID
--Remove the where condition from here       
INNER JOIN pozycja as poz
   ON poz.id = gracz.pozycja
      WHERE gracz.pozycja = 2
and d.ID = 1   --Add it over here using "and"

即,最后将所有条件移到一起。

编辑:

要获取所选列,您可以像这样指定:

SELECT d.id, gr.dane_osobowe, poz.nazwa
   FROM gracz AS gr 
INNER JOIN kontrakt AS kg
   ON gr.ID = kg.Gracz
INNER JOIN Druzyna AS d
   ON kg.Druzyna = d.ID
--Remove the where condition from here       
INNER JOIN pozycja as poz
   ON poz.id = gracz.pozycja
      WHERE gracz.pozycja = 2
and d.ID = 1   --Add it over here using "and"