⊗ppPmDOGD 382 of 447 menu

Duomenų gavimas iš susijusių lentelių PHP

Padarykime užklausą, kuri gaus visus vartotojus kartu su jų miestais. Tam mums reikės LEFT JOIN komandos:

Jos sintaksė atrodo taip:

SELECT laukai FROM lentelės_pavadinimas LEFT JOIN susietos_lentelės_pavadinimas ON ryšio_sąlyga WHERE atrankos_sąlyga

Išnagrinėkime atskiras šios komandos sintaksės dalis.

Laukai

Kadangi atranka vyksta iš kelių lentelių, visų laukų atranka naudojant * neveiks. Ši užklausa pasirinks laukus tik iš pagrindinės lentelės, bet ne iš susietos:

SELECT *

Kad duomenys būtų renkami iš visų lentelių, prieš * reikia nurodyti lentelės pavadinimą atrankai:

SELECT users.*, cities.*

Arba galima išvardinti mums reikalingus laukus nurodant lentelės pavadinimą prieš juos:

SELECT users.name, cities.name

Šie du būdai turi problemą. Taip yra dėl to, kad jei laukai lentelėse turi vienodus pavadinimus, tai PHP masyve įvyks pavadinimų konfliktas ir laimės tik vienas laukas, o antrojo nebus.

Problemai išspręsti reikia konfliktuojančius pavadinimus pervadinti naudojant as komandą:

SELECT users.name, cities.name as city_name

Ryšys

Po ON komandos turime nurodyti laukus iš dviejų lentelių, pagal kuriuos užmezgamas ryšys. Mūsų atveju tai bus laukas id iš miestų lentelės ir laukas city_id iš vartotojų lentelės:

ON cities.id=users.city_id

Užklausa

Galų gale užklausa, kuri gaus vartotojus kartu su jų miestais atrodys taip:

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

Praktinės užduotys

Tarkime, kad turite prekių lentelę ir lentelę su jų kategorijomis. Parašykite užklausą, kuri gautų prekių pavadinimus kartu su jų kategorijomis.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti