⊗ppPmDOGD 382 of 447 menu

Obținerea datelor din tabele relaționate în PHP

Să facem o interogare care va extrage toți utilizatorii împreună cu orașele lor. Pentru aceasta vom avea nevoie de comanda LEFT JOIN:

Sintaxa sa arată astfel:

SELECT câmpuri FROM nume_tabel LEFT JOIN nume_tabel_relaționat ON condiția_legăturii WHERE condiția_selecției

Să analizăm părțile individuale ale sintaxei acestei comenzi.

Câmpurile

Deoarece selecția se face din mai multe tabele, selectarea tuturor câmpurilor prin * nu va funcționa. Următoarea interogare va selecta câmpurile doar din tabelul principal, dar nu și din cel relaționat:

SELECT *

Pentru ca datele să fie selectate din toate tabelele, trebuie să specificați înainte de * numele tabelului pentru selecție:

SELECT users.*, cities.*

Sau puteți enumera câmpurile de care avem nevoie cu specificarea numelui tabelului înaintea lor:

SELECT users.name, cities.name

Aceste două metode au o problemă. Ideea este că dacă câmpurile din tabele au aceleași nume, atunci în array-ul PHP va apărea un conflict de nume și va câștiga doar un câmp, iar al doilea nu va exista.

Pentru a rezolva problema, este necesar să redenumiți numele conflictuale folosind comanda as:

SELECT users.name, cities.name as city_name

Legătura

După comanda ON trebuie să specificăm câmpurile din cele două tabele prin care se realizează legătura. În cazul nostru, acestea vor fi câmpul id din tabela cu orașe și câmpul city_id din tabela cu utilizatori:

ON cities.id=users.city_id

Interogarea

În final, interogarea care va extrage utilizatorii împreună cu orașele lor va arăta astfel:

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

Probleme practice

Să presupunem că aveți un tabel cu produse și un tabel cu categoriile lor. Scrieți o interogare care va extrage numele produselor împreună cu categoriile lor.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge