Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Join Połączenie zapytań
Forum PHP.pl > Forum > Przedszkole
dark_root
Witam,
mam taki kod:
  1.  
  2. $query="SELECT id_dzial FROM faks_kierownicy INNER JOIN faks_kierownicy_grupy ON fkier_autonumer=fki_id_kier_grup WHERE fkier_typ=0 AND fki_id_pracownicy='".$_SESSION["user_id"]."' and kierownicze='1'";
  3. $result=db_query($query);
  4. $answer = array();
  5. while($wiersz=db_fetch_array($result)){
  6. $answer[] = $wiersz['id_dzial'];
  7. }
  8. $a = implode(',',$answer);
  9. $query="SELECT nazwa FROM dzialy WHERE id IN ($a)";
  10. $result=db_query($query);
  11. $answer2= array();
  12. while($wiersz=db_fetch_array($result)){
  13. $answer2[] = $wiersz['nazwa'];
  14. }


Kod składa się z dwóch zapytań sql. Pierwsze pobiera mi odpowiednie id, które potem jest wykorzystywane w drugim zapytaniu. Da się połączyć jakoś te dwa pytania w jedno np. za pomocą jakiś Joinów?
Nie za bardzo mi chce działać jak próbuję.
nospor
Przeciez w pierwszym zapytaniu masz juz JOIN.... czemu wiec nie dodasz do niego kolejnego join na identycznej zasadzie?
dark_root
Spoko, zadziałało, posłużyłem się podzapytaniem tongue.gif
coś miałem problem z dodawaniem dodatkowego JOIN'a
nospor
Podzapytanie ci tylko zamuli. Tutaj naprawde wystaczy JOIN, a zapewne konkretnie LEFT JOIN
dark_root
Próbuję więc tak:
  1. SELECT nazwa FROM dzialy LEFT JOIN (faks_kierownicy INNER JOIN faks_kierownicy_grupy ON fkier_autonumer=fki_id_kier_grup WHERE fkier_typ=0 AND fki_id_pracownicy='2' AND kierownicze='1') ON id_dzial=id


Jednak wywala mi błąd : Incorrect syntax near the keyword 'WHERE'.
Jak powinno wyglądać to zapytanie?
nospor
rety.... No ale kazde JOIN ma miec swoje ON.
dark_root
w zapytaniu mam przecież dwa JOIN i dwa ON
nospor
No ale ON ma byc kolo JOIN a nie na koncu calego zapytania.

No i czemu wszystko po pierwszym JOIN wziales w nawias?questionmark.gifquestionmark.gifquestionmark.gif
dark_root
hmm, według np. tego źródła
ON jest na końcu.
Ja to rozumiem tak:
column_name(s) = nazwa
table1 = dzialy
table2 = faks_kierownicy INNER JOIN faks_kierownicy_grupy ON fkier_autonumer=fki_id_kier_grup WHERE fkier_typ=0 AND fki_id_pracownicy='2' AND kierownicze='1'
i próbuję robić tak:
Kod
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;


jak nie po elemencie table2 to gdzie wstawić ON? smile.gif
Resztę wziąłem w nawias, aby sobie teraz to oddzielić i żeby mi się nie zlewał kod.
nospor
JOIN nazwa_tabeli ON

Niezaleznie ile ma JOIN, to tak to ma zawsze wygladac
JOIN nazwa_tabeli ON
JOIN nazwa_tabeli2 ON
JOIN nazwa_tabel3 ON

I wywal ten nawias bo to kolejny blad
dark_root
dzięki, o to mi chodziło biggrin.gif
nospor
Cytat
Resztę wziąłem w nawias, aby sobie teraz to oddzielić i żeby mi się nie zlewał kod.


2+3*4 Ile wynosi?

Ale czekaj, wezme sobie w nawias reszte, zeby mi sie nie zlewalo
(2+3)*4 Ile teraz wynosi?

Moral:
nawiasy naprawde nie sluza by ladnie wygladalo i sie nie zlewalo, tylko pelnią konkretną funkcje praktycznie wszedzie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.