⊗ppPmDOGD 382 of 447 menu

Andmete hankimine seotud tabelitest PHP-s

Teeme päringu, mis toob kõik kasutajad koos nende linnadega. Selleks vajame käsku LEFT JOIN:

Selle süntaks on järgmine:

SELECT väljad FROM tabeli_nimi LEFT JOIN seotud_tabeli_nimi ON seosingutingimus WHERE valikutingimus

Vaatame üle selle käsu süntaksi üksikosad.

Väljad

Kuna valik tehakse mitmest tabelist, siis kõigi väljade valimine läbi * ei toimi. Järgmine päring valib väljad ainult põhitabelist, mitte seotud tabelist:

SELECT *

Selleks, et andmeid kõigist tabelitest valitaks, tuleb enne * määrata tabeli nimi, millest valida:

SELECT users.*, cities.*

Või saab loetleda vajalikud väljad koos nende ees oleva tabeli nimega:

SELECT users.name, cities.name

Neil kahel viisil on probleem. Asi on selles, et kui väljad tabelites on samanimelised, siis PHP massiivis tekib nimede konflikt ja võidab ainult üks väli, teist aga ei ole.

Probleemi lahendamiseks tuleb konfliktseid nimesid ümber nimetada läbi käsu as:

SELECT users.name, cities.name as city_name

Seos

Pärast käsku ON peame määrama väljad kahest tabelist, mille kaudu seos luuakse. Meie puhul on see väli id linnade tabelist ja väli city_id kasutajate tabelist:

ON cities.id=users.city_id

Päring

Lõpuks näeb päring, mis toob kasutajad koos nende linnadega, välja järgmine:

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

Praktilised ülesanded

Olgemel on tabel toodetega ja tabel nende kategooriatega. Kirjutage päring, mis toob toodete nimed koos nende kategooriatega.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu