⊗ppPmDOGD 382 of 447 menu

Pobieranie danych z powiązanych tabel w PHP

Wykonajmy zapytanie, które pobierze wszystkich użytkowników wraz z ich miastami. Do tego potrzebne nam będzie polecenie LEFT JOIN:

Jego składnia wygląda następująco:

SELECT pola FROM nazwa_tabeli LEFT JOIN nazwa_tabeli_powiązanej ON warunek_powiązania WHERE warunek_wybioru

Przeanalizujmy poszczególne części składni tego polecenia.

Pola

Ponieważ selekcja odbywa się z kilku tabel, wybór wszystkich pól za pomocą * nie będzie działać. Następujące zapytanie wybierze pola tylko z tabeli głównej, ale nie z tabeli powiązanej:

SELECT *

Aby dane były pobierane ze wszystkich tabel, należy przed * podać nazwę tabeli do selekcji:

SELECT users.*, cities.*

Albo można wypisać potrzebne nam pola z podaniem nazwy tabeli przed nimi:

SELECT users.name, cities.name

Te dwa sposoby mają problem. Chodzi o to, że jeśli pola w tabelach mają identyczne nazwy, to w tablicy PHP nastąpi konflikt nazw i zwycięży tylko jedno pole, a drugiego nie będzie.

Aby rozwiązać problem, należy zmienić nazwy konfliktowych pól za pomocą polecenia as:

SELECT users.name, cities.name as city_name

Powiązanie

Po poleceniu ON musimy określić pola z dwóch tabel, za pomocą których realizowane jest powiązanie. W naszym przypadku będzie to pole id z tabeli miast i pole city_id z tabeli użytkowników:

ON cities.id=users.city_id

Zapytanie

Ostatecznie zapytanie, które pobierze użytkowników razem z ich miastami będzie wyglądać następująco:

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

Zadania praktyczne

Załóżmy, że masz tabelę z produktami i tabelę z ich kategoriami. Napisz zapytanie, które pobierze nazwy produktów wraz z ich kategoriami.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć