⊗ppPmDOGD 382 of 447 menu

Recupero di dati da tabelle correlate in PHP

Facciamo una query che recupererà tutti gli utenti insieme alle loro città. Per questo avremo bisogno del comando LEFT JOIN:

La sua sintassi è la seguente:

SELECT campi FROM nome_tabella LEFT JOIN nome_tabella_correlata ON condizione_collegamento WHERE condizione_selezione

Analizziamo le singole parti della sintassi di questo comando.

Campi

Poiché la selezione avviene da più tabelle, la selezione di tutti i campi tramite * non funzionerà. La seguente query selezionerà i campi solo dalla tabella principale, ma non da quella correlata:

SELECT *

Affinché i dati vengano selezionati da tutte le tabelle, è necessario specificare il nome della tabella prima di * per la selezione:

SELECT users.*, cities.*

In alternativa, è possibile elencare i campi necessari specificando il nome della tabella prima di essi:

SELECT users.name, cities.name

Questi due metodi hanno un problema. Il fatto è che se i campi nelle tabelle hanno nomi identici, nell'array PHP ci sarà un conflitto di nomi e vincerà solo un campo, mentre il secondo non sarà presente.

Per risolvere il problema, è necessario rinominare i nomi in conflitto tramite il comando as:

SELECT users.name, cities.name as city_name

Collegamento

Dopo il comando ON dobbiamo specificare i campi delle due tabelle tramite i quali viene stabilito il collegamento. Nel nostro caso, saranno il campo id della tabella delle città e il campo city_id della tabella degli utenti:

ON cities.id=users.city_id

Query

Alla fine, la query che recupererà gli utenti insieme alle loro città sarà la seguente:

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

Compiti pratici

Supponiamo di avere una tabella con i prodotti e una tabella con le loro categorie. Scrivi una query che recuperi i nomi dei prodotti insieme alle loro categorie.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta