
Programujete-li objektově, musíte se trápit se složitými strukturami SELECT dotazů. V procedurálním programování to lze sice obejít pomocí kaskády jednoduchých dotazů, kdy výsledky zpracujete v php a opět pošlete dotaz na databázi, jenže je to na úkor výkonnosti a u navštěvovanějších větších webů s rozsáhlými databázemi by to bylo pro server neúnosné. Normální je, můžete-li všechna potřebná data získat z databáze v jednom dotazu, byť je většinou velmi komplikovaný. Kód se následně s velkými obtížemi edituje, avšak složené dotazy jsou při moderním programování nevyhnutelné.
Při sestavování dotazů můžete používat následující příkazy:
Nejjednodušší jsou vnořené dotazy. Mějme dvě tabulky: kontakty a kontakty_akce. Tabulka kontakty obsahuje běžné informace jako jméno, příjmení, adresa … (netřeba zde uvádět strukturu tabulky). Tabulka kontakty_akce slouží k zaznamenávání akcí nad kontakty. (Používá se například v CRM systémech, kdy potřebujete mít přehled, kdy a jaký typ zprávy jste komu poslali.)
V příkazu SELECT jsme zvolili hvězdičkou všechny záznamy a dále pomocí sjednocovacích příkazů CONCAT řetězec dat z tabulky kontakty_akce, která jsou oddělená středníkem.
Nejpoužívanější jsou každopádně JOINs. Hezky vysvětlené jsou na příkladě Marťanské základny.