LEFT JOIN koristite kada zelite izvestaj koji u sebi ukljucuje redove iz leve tabele, cak i ako nema zajednichik tacaka sa drugom, tj. desnom tabelom.
Da pogledamo strukturu LEFT JOIN komande, pa cemo obraditi i primer da nam bude jasnije:
SELECT kolona (ili vise kolona) FROM tabela1
LEFT JOIN tabela2
ON tabela1.kolona=tabela2.kolona
Kao sto vidite, sem LEFT JOIN kljucne reci u komandi, nema drasticnije razlike u odnosu na obicni JOIN.
Da se prisetimo sadrzaja obe tabele:
mysql> SELECT * FROM prodavnice;
+------+-----------+------------+-----------+-------------+------+
| p_id | gradovi | prodavnice | proizvod | raspolozivo | cena |
+------+-----------+------------+-----------+-------------+------+
| 1 | Beograd | prbg1 | Kafa | 121 | 150 |
| 2 | Beograd | prbg2 | Cigare | 50 | 300 |
| 3 | Subotica | prsub1 | Hleb | 43 | 45 |
| 4 | Nis | prnis1 | Hleb | 23 | 55 |
| 5 | Kraljevo | prkrl1 | Pavlaka | 155 | 50 |
| 6 | Uzice | pruzi1 | Mleko | 68 | 90 |
| 7 | Majdanpek | prmaj1 | Mleko | 91 | 87 |
| 8 | Bor | prbor1 | Pavlaka | 155 | 50 |
| 9 | Kikinda | prkik1 | Ajzaklija | 38 | 650 |
| 10 | Obrenovac | prob1 | Jabuke | 35 | 120 |
| 11 | Smederevo | prsm1 | Ajvar | 28 | 270 |
| 12 | Zrenjanin | przr1 | Somun | 10 | 59 |
| 13 | Jagodina | prjg1 | Bakalar | 29 | 400 |
+------+-----------+------------+-----------+-------------+------+
13 rows in set (0.03 sec)
mysql>
Sadrzaj tabele "poslato":
mysql> SELECT * FROM poslato;
+------+----------+------+
| s_id | dokument | p_id |
+------+----------+------+
| 1 | 55210 | 1 |
| 2 | 32618 | 1 |
| 3 | 50687 | 9 |
| 4 | 49321 | 4 |
| 5 | 39658 | 3 |
| 6 | 41200 | 11 |
+------+----------+------+
6 rows in set (0.00 sec)
mysql>
Posto imamo pregled podataka u tabeli, hajde da izvucemo podatke za gradove i oznaku prodavnica iz tabele "prodavnice", tako da pored njih imamo ispisane i brojeve dokumenata iz tabele "poslato", koje su za njih vezane:
mysql> SELECT prodavnice.gradovi, prodavnice.prodavnice, poslato.dokument
-> FROM prodavnice
-> LEFT JOIN poslato
-> ON prodavnice.p_id=poslato.p_id
-> ORDER BY prodavnice.gradovi;
+-----------+------------+----------+
| gradovi | prodavnice | dokument |
+-----------+------------+----------+
| Beograd | prbg1 | 55210 |
| Beograd | prbg1 | 32618 |
| Beograd | prbg2 | NULL |
| Bor | prbor1 | NULL |
| Jagodina | prjg1 | NULL |
| Kikinda | prkik1 | 50687 |
| Kraljevo | prkrl1 | NULL |
| Majdanpek | prmaj1 | NULL |
| Nis | prnis1 | 49321 |
| Obrenovac | prob1 | NULL |
| Smederevo | prsm1 | 41200 |
| Subotica | prsub1 | 39658 |
| Uzice | pruzi1 | NULL |
| Zrenjanin | przr1 | NULL |
+-----------+------------+----------+
14 rows in set (0.05 sec)
mysql>
Odlicno. U koloni "dokument" oznaka NULL znaci da u tu prodavnicu/grad nismo slali za sad ni jedan dokument.
2014 © webprogramianje.net - Sva prava su zadržana. 




