Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Join Połączenie zapytań
dark_root
post
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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ę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez w pierwszym zapytaniu masz juz JOIN.... czemu wiec nie dodasz do niego kolejnego join na identycznej zasadzie?
Go to the top of the page
+Quote Post
dark_root
post
Post #3





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


Spoko, zadziałało, posłużyłem się podzapytaniem (IMG:style_emoticons/default/tongue.gif)
coś miałem problem z dodawaniem dodatkowego JOIN'a
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Podzapytanie ci tylko zamuli. Tutaj naprawde wystaczy JOIN, a zapewne konkretnie LEFT JOIN
Go to the top of the page
+Quote Post
dark_root
post
Post #5





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




rety.... No ale kazde JOIN ma miec swoje ON.
Go to the top of the page
+Quote Post
dark_root
post
Post #7





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


w zapytaniu mam przecież dwa JOIN i dwa ON
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No ale ON ma byc kolo JOIN a nie na koncu calego zapytania.

No i czemu wszystko po pierwszym JOIN wziales w nawias?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
dark_root
post
Post #9





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


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? (IMG:style_emoticons/default/smile.gif)
Resztę wziąłem w nawias, aby sobie teraz to oddzielić i żeby mi się nie zlewał kod.

Ten post edytował dark_root 8.11.2013, 16:08:10
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
dark_root
post
Post #11





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


dzięki, o to mi chodziło (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 6.10.2025 - 21:55