⊗ppPmDOGD 382 of 447 menu

Hämta data från relaterade tabeller i PHP

Låt oss göra en förfrågan som hämtar alla användare tillsammans med deras städer. För detta behöver vi kommandot LEFT JOIN:

Dess syntax ser ut på följande sätt:

SELECT fält FROM tabellnamn LEFT JOIN namn_på_relaterad_tabell ON villkor_för_relation WHERE villkor_för_urval

Låt oss gå igenom de enskilda delarna av syntaxen för detta kommando.

Fält

Eftersom urvalet görs från flera tabeller, kommer urval av alla fält via * inte att fungera. Följande förfrågan väljer endast fält från huvudtabellen, men inte från den relaterade:

SELECT *

För att data ska hämtas från alla tabeller måste man före * ange tabellnamnet för urvalet:

SELECT users.*, cities.*

Alternativt kan man lista de fält vi behöver med angivelse av tabellnamnet före dem:

SELECT users.name, cities.name

Dessa två sätt har ett problem. Saken är den, att om fälten i tabellerna har samma namn, kommer det i PHP-arrayen att uppstå en konflikt mellan namnen och bara ett fält kommer att "vinna", medan det andra inte kommer att finnas med.

För att lösa problemet måste man byta namn på de konfliktskapande namnen via kommandot as:

SELECT users.name, cities.name as city_name

Relation

Efter kommandot ON måste vi ange fälten från de två tabellerna som relationen sker genom. I vårt fall kommer det att vara fältet id från tabellen med städer och fältet city_id från tabellen med användare:

ON cities.id=users.city_id

Förfrågan

Så småningom kommer förfrågan som hämtar användare tillsammans med deras städer att se ut på följande sätt:

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

Praktiska uppgifter

Antag att du har en tabell med produkter och en tabell med deras kategorier. Skriv en förfrågan som hämtar produktnamnen tillsammans med deras kategorier.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa