⊗ppPmDOGD 382 of 447 menu

Získávání dat z propojených tabulek v PHP

Pojďme vytvořit dotaz, který načte všechny uživatele spolu s jejich městy. K tomu budeme potřebovat příkaz LEFT JOIN:

Jeho syntaxe vypadá následovně:

SELECT pole FROM jméno_tabulky LEFT JOIN jméno_propojené_tabulky ON podmínka_propojení WHERE podmínka_výběru

Pojďme si rozebrat jednotlivé části syntaxe tohoto příkazu.

Pole

Protože se výběr provádí z několika tabulek, výběr všech polí pomocí * nebude fungovat. Následující dotaz vybere pole pouze z hlavní tabulky, ale ne z propojené:

SELECT *

Aby se data vybírala ze všech tabulek, je třeba před * uvést jméno tabulky pro výběr:

SELECT users.*, cities.*

Nebo můžete vypsat potřebná pole s uvedením jména tabulky před nimi:

SELECT users.name, cities.name

Tyto dva způsoby mají problém. Jde o to, že pokud pole v tabulkách mají stejná jména, dojde v poli PHP ke konfliktu jmén a vyhraje pouze jedno pole, a druhého nebude.

Pro vyřešení problému je třeba konfliktní jména přejmenovat pomocí příkazu as:

SELECT users.name, cities.name as city_name

Propojení

Po příkazu ON musíme uvést pole ze dvou tabulek, pomocí kterých se provádí propojení. V našem případě to bude pole id z tabulky s městy a pole city_id z tabulky s uživateli:

ON cities.id=users.city_id

Dotaz

Výsledný dotaz, který načte uživatele spolu s jejich městy bude vypadat následovně:

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

Praktické úlohy

Předpokládejme, že máte tabulku se zbožím a tabulku s jejich kategoriemi. Napište dotaz, který načte názvy zboží spolu s jejich kategoriemi.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout