Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]Pomoc w zrozumieniu LEFT JOIN
_Martin_
post
Post #1





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


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. .....


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ł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam serdecznie!

Ten post edytował _Martin_ 27.02.2009, 20:20:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Nie rozumiem problemu.
Jedna klauzula WHERE i po krzyku.
Go to the top of the page
+Quote Post
KCG
post
Post #3





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
_Martin_
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

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


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ł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
thx
Go to the top of the page
+Quote Post
xeveot
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 2
Dołączył: 17.03.2008

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


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





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


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.
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: 23.08.2025 - 14:42