MySQL INNER JOIN je u stvari obicni-prosti JOIN.
INNER JOIN koristimo kada zelimo dobiti izvestaj iz vise tabela kada postoji bar jedno poklapanje u tim tabelama.
Struktura INNER JOIN-a je sledeca:
SELECT kolona
FROM tabela1
INNER JOIN tabela2
ON tabela1.kolona=tabela2.kolona
Da se prisetimo sadrzaja obe tabele pre nastavka lekcije:
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>
Sada cemo koristiti INNER JOIN da izvucemo sve Prodavnice za koje su vezani neki dokumenti:
mysql> SELECT prodavnice.gradovi, prodavnice.prodavnice, poslato.dokument
-> FROM prodavnice
-> INNER JOIN poslato
-> ON prodavnice.p_id=poslato.p_id
-> ORDER BY prodavnice.gradovi;
+-----------+------------+----------+
| gradovi | prodavnice | dokument |
+-----------+------------+----------+
| Beograd | prbg1 | 55210 |
| Beograd | prbg1 | 32618 |
| Kikinda | prkik1 | 50687 |
| Nis | prnis1 | 49321 |
| Smederevo | prsm1 | 41200 |
| Subotica | prsub1 | 39658 |
+-----------+------------+----------+
6 rows in set (0.38 sec)
mysql>
Objasnjenje redova:
SELECT prodavnice.gradovi, prodavnice.prodavnice, poslato.dokument = Ovim redom definisemo strukturu kolona u izvestaju koji pravimo.
FROM prodavnice = izvlacimo podatke iz tabele "prodavnice"
INNER JOIN poslato = tabelu "prodavnice" uparujemo (preklapamo) sa tabelom "poslato".
ON prodavnice.p_id=poslato.p_id = Pravimo kriterijum. Povezujemo kolone p_id iz obe tabele, pa cemo na osnovu p_id POSTOJANJA u obe tabele dobiti izvestaj.
ORDER BY prodavnice.gradovi = Listing izvestaja ce se prevashodno bazirati na selekciji po gradovima iz tabele "prodavnice".
2014 © webprogramianje.net - Sva prava su zadržana. 




