Inner join
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím. Prosím o radu, v čem je tento příkaz špatně: mysql_query("SELECT tab.user,tab.nazev,tab.cena FROM tab WHERE id = ".$id." JOIN tab2 ON tab.user = tab2.user"); Příkaz má vybrat user, nazev, cena ze sloupce "tab", kde id předmětu je intval($_POST['id']), připojit tabulku "tab2", kde user v tabulce "tab" se rovná user v tabulce "tab2".
-
Špatně je pořadí. Správné má ten dotaz být takto: SELECT `tab`.`user`,`tab`.`nazev`,`tab`.`cena` FROM `tab` JOIN `tab2` ON `tab`.`user` = `tab2`.`user` WHERE `tab`.`id` = ".$id." Případně zkráceně: SELECT `tab`.`user`,`tab`.`nazev`,`tab`.`cena` FROM `tab` JOIN `tab2` USING (`user`) WHERE `tab`.`id` = ".$id."
-
Výborně, děkuji za radu. Jen bych se ještě rád zeptal, zda ty zpětné apostrofy jsou důležité ? Nepíši je a dosud jsem se nesetkal s chybou.
-
SQL syntaxe má pevně daná pravidla a dané pořadí. Pokud něco prohodíš, tak to vyvolá chybu. Takže je třeba si zapamatovat aspoň základní pořadí nejčastěji používaných dotazů. Apostrofy: Když už se jednou zeptám, tak si zkontroluji, zda byla podána odpověď. Podal jsem ti odpověď, tak proč pokládáš otázku znovu?
-
Pardon, zapomněl jsem, že jsem to již psal. A děkuji.
-
S psaním náročnějších SQL dotazů může pomoci syntax Heredoc: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc Výhodou je, že rozbaluje proměnné a přitom mu nevadí apostrofy ani uvozovky. U některých webů jedním heredoc generuji kompletní web. Jen je důležité mít nachystán obsah všech vkládaných proměnných. Je to velmi rychlé.