⊗ppPmDOGD 382 of 447 menu

Tietojen hakeminen liitetyistä tauluista PHP:ssä

Tehdään kysely, joka hakee kaikki käyttäjät yhdessä heidän kaupunkiensa kanssa. Tätä varten tarvitsemme LEFT JOIN -komennon:

Sen syntaksi on seuraava:

SELECT kentät FROM taulun_nimi LEFT JOIN liitetyn_taulun_nimi ON linkkiehto WHERE hakuehto

Käydään läpi tämän komennon syntaksin yksittäiset osat.

Kentät

Koska haku tapahtuu useista tauluista, kaikkien kenttien haku *:lla ei toimi. Seuraava kysely valitsee kentät vain päätaulusta, mutta ei liitetystä taulusta:

SELECT *

Jotta tiedot haettaisiin kaikista tauluista, tulee *:n eteen määrittää taulun nimi haulle:

SELECT users.*, cities.*

Vaihtoehtoisesti voidaan luetella tarvitsemamme kentät määrittämällä taulun nimi niiden edessä:

SELECT users.name, cities.name

Näissä kahdessa menetelmässä on ongelma. Asia on siinä, että jos kentät tauluissa ovat samannimisiä, tapahtuu PHP-taulukossa nimikonflikti ja vain yksi kenttä voittaa, eikä toista ole.

Ongelman ratkaisemiseksi on ristiriitaiset nimet nimetä uudelleen as -komennolla:

SELECT users.name, cities.name as city_name

Linkki

ON -komennon jälkeen meidän on määritettävä kahden taulun kentät, joiden kautta yhteys toteutuu. Meidän tapauksessamme nämä ovat kentät id kaupunkien taulusta ja kenttä city_id käyttäjien taulusta:

ON cities.id=users.city_id

Kysely

Lopulta kysely, joka hakee käyttäjät yhdessä heidän kaupunkiensa kanssa on seuraava:

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

Käytännön tehtävät

Oletetaan, että sinulla on tuotetaulu ja taulu niiden kategorioille. Kirjoita kysely, joka hakee tuotteiden nimet yhdessä niiden kategorioiden kanssa.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää