Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Pomoc w zrozumieniu LEFT JOIN
Forum PHP.pl > Forum > Przedszkole
_Martin_
Witam


Mam taki problemik..Ze zrozumieniem tej funkcji MySQL. Wertowałem parę kursów ale nigdzie nie jest soczyście opisane co i jak!

Może wytłumaczycie mi to na przykładzie!
Podam 2 przykładowe tabele!

Nazwa tabeli: Imie
-ID---id_uz---imie------
-1 ---1 ---maciek---
-2 ---8 ---mariusz--
-3 ---10 ---andrzej---
-4 ---12 ---paweł-----
-5 ---15 ---adam-----


Nazwa tabeli Nazwisko
-ID---id_uz---nazwisko----
-1 ---1 ---Żurawski---
-2 ---8 ---Królewiak---
-3 ---10 ---Pawlak-------
-4 ---12 ---Zalewski--------
-5 ---15 ---Rutkowski--------

Ok mamy w tabele przyjmując iż id auto_increment
Teraz chciał bym dopasować imie i nazwisko o wspólnym id np:

  1. SELECT
  2. n.id_uz, n.nazwisko, i.id_uz, i.imie
  3. FROM nazwisko AS n,
  4. imie AS i
  5. .....
  6. questionmark.gifquestionmark.gif?


No i co dalej panowie żeby po wypisaniu np jakiejś zmiennej np
$user[1]; wyświetliło mi: Maciek Żurawski?

Ktoś może ma pomysł smile.gif
Pozdrawiam serdecznie!
blooregard
Nie rozumiem problemu.
Jedna klauzula WHERE i po krzyku.
KCG
Zły przykład dałeś, z wiadomych przyczyn, no ale jeśli już to:
  1. SELECT i.`imie`,n.`nazwisko`
  2. FROM `Imie` i
  3. LEFT JOIN `Nazwisko` n ON i.`id_uz`=n.`id_uz`
  4. WHERE i.`id`=2

I potem masz to w zmiennych $wynik['imie'] i $wynik['nazwisko'].
Btw. wydaję mi się, że lepiej unikać tak podobnych nazw przy polach i tabelach smile.gif
_Martin_
Cytat(blooregard @ 27.02.2009, 21:08:30 ) *
Nie rozumiem problemu.
Jedna klauzula WHERE i po krzyku.


Przyjacielu to nie problem ja próbuje zrozumieć jak można łączyć wyniki 2 tabel w 1 rekord np jak mam numer usera to zeby wyświelił mi dane jego z 2 tabel

Racja teraz nie wiem co do czego mozesz opisac to jeszcze raz ale..
Jeżeli nazwa tabeli imie=nazwaimie
nazwisko=nazwanazwisko zebym się nie pogubił smile.gif
thx
xeveot
  1. SELECT a.imie,b.nazwisko FROM Imie a JOIN Nazwisko b WHERE a.id_uz=b.id_uz


Ja to bym zrobił tak, nie wiem po co porównywać jeszcze id. Ale jeśli źle zrozumiałem problem to przepraszam.
Pozdrawiam
kefirek
Trochę zły przykład podąłeś wytłumaczę ci na moim

Załóżmy że masz tabele
Użytkownicy i masz w niej takie kolumny

ID | NAZWA |
1 | beniu |
2 | ziomek |

I masz drugą tabele np. z zakupami jakie dokonali użytkownicy

I masz w niej takie kolumny

ID | id_uzytkonika | data_dokonaniu_zakpów
1 | 1 |2007-03-03
2 | 1 |2007-03-03
3 | 2 |2007-03-03

W obydwu tabelach ID jest unikalne i się nie powtarza
I powiedzmy że chcesz zrobić takie zapytanie aby uzyskać taki wynik.

1 | beniu |2007-03-03
2 | beniu |2007-03-03
3 | ziomek |2007-03-03

Czyli zamiast id użytkownika chcesz mieć jego nazwę czyli dołączasz na podstawie id_uzytkonika tabele użytkownicy gdzie id_uzytkonika=ID

Czyli robisz takie zapytanie

  1. SELECT z.*, u. ID, u. NAZWA FROM zamowienia z
  2. LEFT JOIN uzytkownicy u ON (z.id_uzytkonika= u.ID)


Do tabel stosujesz aliasy w celu ich odróżnienia czyli te literki
Stosujesz je po nazwie tabeli
z.*, to oznacza ze zwróci ci wszystkie kolumny z tabeli zamówienia
a to u.ID, u. NAZWA zwróci ci tylko id i nazwę z tabeli użytkownicy możesz oczywiście dać u.* i zwróci wszystkie dane użytkownika.
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.