SQL příkaz:
SELECT id, title, position,
IF(menu.content = 0, CONCAT('ct=content&cid=', menu.content) ) AS true_content
FROM menu
ORDER BY position
Jakou roli zde sehrává struktura IF? Přesněji: jaký vliv bude mít, pokud budou vyhovovat její pravidla?
Díky
pravidla? Hmm ... dobrý. Já jsem si vždy myslel, že IF je podmínka (angl. IF = jestli, pokud, ...).
Tudíž to vybere všechny řádky, které splňují podmínku.
Jak logické, že?
http://mm.gene.cz/
No to mi také došlo, ale není mi jasné, proč se tedy dají vkládat takovéhle podmínky + ještě navíc je zde klíčové slovo WHERE....
a když je tam pak AS tru_content, tak to znamená co? Co to vrátí v tomto sloupci?
kde vidíš where? Já ho nikde nevidím.
Hele, vezmu to pěkně popořadě:
SELECT <-- dotaz vytahující data z databáze
id, title, position, <- určuje spoupce, které se mají vytáhnout
IF(menu.content = 0, CONCAT('ct=content&cid=', menu.content) ) <-- tohle celý je podmánka, rozebírat jí nebudu
AS true_content <-- pojmenování.
FROM menu <-- odkud budu data vytahovat
ORDER BY position <-- podle čeho je budu rovnat
Což o to, vybrat odněkud SQL dotaz je pěkný, ale ještě tomu tak rozumět, viď =)
Takhle do podrobna to být nemuselo, ale díky moc.
Myslel jsem to tak, proč jsou v SQL podmínky IF a zároveň i WHERE. Ale už jsem si našel odpověď.
Btw, není stažený, musím jen dodělat web po někom jiném.
To if neomezí nijak délku výpisu z tabulky.
a v těch závorkách to není celé podmínka, ale měl by to být celý výraz if. Dokumentace povídá, že by tam měl být ještě jeden parametr, tak nevím.
IF(podm, výraz pro pravdivou podmínku, výraz pro nepravdivou podmínku)
zbytek viz manuál.
where pak omezí počet řádků z výpisu
MzM: to v závorkách JE podmínka:
IF(menu.content = 0, CONCAT('ct=content&cid=', menu.content) ) AS true_content
laický překlad:
Pokud (je menu.content nula, SPOJ 'ct=content&cid=', menu.content) a vrať to jako true_content.
No a s tou chybějící hodnotou je to asi takhle: pokud je splněna podmínka, tak se udělá to výše popsané, pokud ne, tak se řádek do výsledku vůbec nezahrne, takže je druhý parametr zbytečný.
Autor tohodle SQL dotazu byl docela šikovnej ;)
Aha! :-) zase jsem kousek chytřejší. MySQL manuál nic takového nezmiňoval nebo jsem se jenom špatně díval? Nebo to není MySQL?
Je to poměrně matoucí zápis. Asi bych ho nepoužil... Přece jenom, až si to přečte za rok, tak z toho bude jelen... A když ne on, tak jeho následník...