Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Mysql] Złączenie trzech tabel, Problem z wynikiem innym od oczekiwanego
seeb
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 6.12.2007
Skąd: Poznań

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


Mam problem ze złączeniem trzech tabel, które doprowadzają mnie dziś już do szału
OPIS TABEL
--------------------
CODE
tabela1: sys_ptp
lp pracodawca id
1 30 32
2 30 33
3 2 38
4 59 55

tabela 2:sys_users
id imie_nazwisko email
32 Agnieszka Fikcyjna afikcyjna@onet.pl
33 Ryszarda Fikcyjna ryszardaf@onet.pl
38 Zdzisław Fikcyjny Fzdzichu@onet.pl
55 Zdzisław Przesieka przesieka@onet.pl

Tabela 3:sys_pracownicy_dane
id nr_szafki nr_kartoteki numer_klucza_zapasowego
32 11 1890 339887
33 12 1891 743689
38 45 1271 129887
55 90 0946 877639

Muszę z tych tabel wybrać po numerze pracodawcy zestaw danych wszystkich danych użytkowników przypisanych do znanego pracodawcy np nr 30 ale już brakuje mi pomysłów.

  1. SELECT *
  2. FROM sys_ptp ptp
  3. JOIN sys_users u ON ptp.id = u.id
  4. JOIN sys_pracownicy_dane p ON p.id=u.id
  5. WHERE ptp.pracodawca = 30

daje jeden wynik a powinien dać dwa. Za wszelką pomoc będę niezmiernie wdzięczny i z góry dziękuję.

Ten post edytował seeb 14.02.2012, 18:34:58
Go to the top of the page
+Quote Post
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Użyj LEFT JOIN. W zapytaniu zgubiłeś ON przy drugim złączeniu. Zmień też kolejność kolumn przy tym drugim złączeniu.
Go to the top of the page
+Quote Post
seeb
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 6.12.2007
Skąd: Poznań

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


A dziekuję za podpowiedz LEFT użyłem w obu przypadkach i zamieniłem p.id=u.id na u.id = p.id i wydaje się, że wszystko w porządku. Dodaję + za pomoc.
ON zgubiłem w czasie przepisywania (IMG:style_emoticons/default/smile.gif)
Finalnie:
  1. SELECT *
  2. FROM sys_ptp ptp
  3. LEFT JOIN sys_users u ON ptp.id = u.id
  4. LEFT JOIN sys_pracownicy_dane p ON u.id=p.id
  5. WHERE ptp.pracodawca = 30


Ten post edytował seeb 14.02.2012, 19:02:31
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: 14.09.2025 - 16:00