⊗ppPmDOGD 382 of 447 menu

Pridobivanje podatkov iz povezanih tabel v PHP-ju

Naredimo poizvedbo, ki bo pridobila vse uporabnike skupaj z njihovimi mesti. Za to bomo potrebovali ukaz LEFT JOIN:

Njen sintaksa je naslednja:

SELECT polja FROM ime_tabele LEFT JOIN ime_povezane_tabele ON pogoj_povezave WHERE pogoj_izbire

Razložimo posamezne dele sintakse tega ukaza.

Polja

Ker izbira poteka iz več tabel, izbira vseh polj prek * ne bo delovala. Naslednja poizvedba bo izbrala polja samo iz glavne tabele, ne pa iz povezane:

SELECT *

Da se podatki izberejo iz vseh tabel, je treba pred * navesti ime tabele za izbiro:

SELECT users.*, cities.*

Lahko pa naštejemo polja, ki jih potrebujemo, z navedbo imena tabele pred njimi:

SELECT users.name, cities.name

Ti dve metodi imata težavo. Bistvo je v tem, da če imajo polja v tabelah enaka imena, bo v matriki PHP-ja prišlo do konflikta imen in zmagalo bo le eno polje, drugega pa ne bo.

Za rešitev problema je treba konfliktna imena preimenovati z ukazom as:

SELECT users.name, cities.name as city_name

Povezava

Po ukazu ON moramo navesti polja iz dveh tabel, po katerih se izvaja povezava. V našem primeru bo to polje id iz tabele z mesti in polje city_id iz tabele z uporabniki:

ON cities.id=users.city_id

Poizvedba

Kot rezultat bo poizvedba, ki bo pridobila uporabnike skupaj z njihovimi mesti, videti takole:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

Praktične naloge

Recimo, da imate tabelo z izdelki in tabelo z njihovimi kategorijami. Napišite poizvedbo, ki bo pridobila imena izdelkov skupaj z njihovimi kategorijami.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni