Prikazivanje podataka iz više tabela pomoću izraza INNER JOIN u SQL-u

Izraz INNER JOIN prikuplja informacije koje se pojavljuju u dve ili više baza podataka

Izrazi INNER JOIN su daleko najčešće korišćena vrsta izraza JOIN u SQL-u. Oni prikupljaju informacije koje se nalaze u dve ili više tabela baza podataka. Uslov spajanja (engl. join) određuje koji će se zapisi sparivati i određen je u naredbi WHERE. Na primer, ako vam je potreban spisak vozača uparenih sa vozilima kojima upravljaju, a da se, pri tom, vozači i vozila nalaze u istom gradu, sledeći upit u SQL-u će vam obaviti taj zadatak:

 

SELECT lastname, firstname, tag

FROM drivers, vehicles

WHERE drivers.location = vehicles.location

 

Rezultati koje ćete dobiti izgledaju ovako:

 

lastname      firstname       tag

———–     ————       —-

Baker          Roland          H122JM

Smythe       Michael         D824HA

Smythe       Michael         P091YF

Jacobs        Abraham       J291QR

Jacobs        Abraham       L990MT

 

Primetićete da smo dobili baš onakav rezultat kakav smo tražili. Moguće je stvoriti još precizniji upit određujući dodatne kriterijume u naredbi WHERE. Pretpostavimo da je prvobitni upit spojio vozače sa vozilima koja ne smeju da voze (vozače kamiona sa automobilima i obrnuto). Možete koristiti sledeći upit da biste rešili taj problem:

 

SELECT lastname, firstname, tag, vehicles.class

FROM drivers, vehicles

WHERE drivers.location = vehicles.location

AND drivers.class = vehicles.class

 

Ovaj primer precizno određuje izvornu tabelu za atribut klase u naredbi SELECT jer je klasa dvoznačna – pojavljuje se u obema tabelama. Kod obično određuje koju kolonu tabele treba obuhvatiti rezultatom upita. U ovom slučaju, ne pravi se razlika jer su kolone identične i povezane su korišćenjem spajanja po jednakosti (EQUIJOIN). Međutim, ako kolone sadrže različite podatke, ova razlika će biti od presudnog značaja. Prikazaćemo vam rezultate ovog upita:

 

lastname     firstname        tag           class

———-      ————       —-           ——

Baker           Roland         H122JM     Car

Smythe        Michael        D824HA    Truck

Jacobs         Abraham      J291QR      Car

 

U redovima koji nedostaju spojen je Michael Smythe sa automobilom i Abraham Jacobs sa kamionom, vozilima kojima ne smeju da upravljaju.

Izraze INNER JOIN možete koristiti da bi kombinovali podatke iz tri ili više tabela.