Zadejte hledaný výraz...

MySQL sloupec AS v podmínce

pr0gr4mm3r
verified
rating uzivatele
(4 hodnocení)
29. 7. 2010 16:07:09
Zdravím.
Omlouvám se za matoucí název tématu, ale nevím, jak to krátce popsat.
Mám tabulku, a chci provést podmíněný výběr. Při výběru si z určitého důvodu jeden sloupec "přejmenuju" pomocí AS na nějaký nový název. Ten nový název se potom snažím použít v klauzuli WHERE, ovšem to nefunguje.
Zde kód:
Funguje to takto:
Problém je, že sloupec column nemusí být vždy jen sloupec, ale může to být výsledek poddotazu. Potom nastává situace kvůli které to řeším, že bych musel poddotaz použít 2x, což není zrovna nejhezčí řešení.
Asi takto by to bylo nefunkční:
A takto funkční:
Ten poddotaz ale volám 2x, což se mi nelíbí. Jde to nějak elegantně vyřešit?
Díky
29. 7. 2010 16:07:09
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535980
mayo
verified
rating uzivatele
29. 7. 2010 16:48:24
skus v takom pripade miesto WHERE pouzit HAVING - ale pozor moze to mat dopad na rychlost spracovania - pretoze data sa filtruju az v neskorsom kroku. treba to preto pouzivat naozaj len tam kde sa WHERE pouzit neda.
29. 7. 2010 16:48:24
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535979
derk
verified
rating uzivatele
(7 hodnocení)
29. 7. 2010 16:48:36
místo WHERE dát HAVING:
SELECT (poddotaz) AS ascolumn FROM table HAVING ascolumn = 8
29. 7. 2010 16:48:36
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535978
pr0gr4mm3r
verified
rating uzivatele
(4 hodnocení)
29. 7. 2010 17:02:16
Dík za radu. Už jsem to v pár dotazech viděl, ale nikdy jsem nezkoumal účel. Rep+
29. 7. 2010 17:02:16
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535977
duben
verified
rating uzivatele
(49 hodnocení)
29. 7. 2010 17:43:44
Proč máš poddotaz v SELECT části a ne v části FROM? Přijde mi to nelogické. Jinak engine databáze by tohle měl zpracovat jako 1 dotaz i když je tam 2x. Ale pro jistotu bych změřil délku trvání dotazu.
29. 7. 2010 17:43:44
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535976
pr0gr4mm3r
verified
rating uzivatele
(4 hodnocení)
29. 7. 2010 18:07:00
Mám ho v select části, protože tahám dodatečná data z jiné tabulky a join v tuto chvíli není vhodný.
Změnit dobu trávní dotazu by to mohlo, pokud není dotaz cachovaný.
29. 7. 2010 18:07:00
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535975
duben
verified
rating uzivatele
(49 hodnocení)
29. 7. 2010 18:41:14
Nedovedu si predstavit kdy neni JOIN vhodny, pokud netahas zrovna jednu hodnotu a i pak bude join rychlejsi ... no ale nebudu te presvedcovat o sve pravde.
29. 7. 2010 18:41:14
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535974
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
29. 7. 2010 18:51:11
Napsal duben;545454
Nedovedu si predstavit kdy neni JOIN vhodny, pokud netahas zrovna jednu hodnotu a i pak bude join rychlejsi ... no ale nebudu te presvedcovat o sve pravde.
Také si myslím, že JOIN je rychlejší v každém případě. Hodíš sem ukázku proč nemůže být JOIN použitý?
29. 7. 2010 18:51:11
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535973
pr0gr4mm3r
verified
rating uzivatele
(4 hodnocení)
29. 7. 2010 19:03:56
ok, postnu vám to sem. Mě prostě poddotazy přišly v tuto chvíli jednodušší - nemusím řešit dva joiny ze stejné tabulky - přejmenovávat, apod.
Ale nakonec jdu udělat benchmark obou verzí, pak napíšu výsledek.
Zde SQL:
Poddotazy:
Joiny:
---------- Příspěvek doplněn 29.07.2010 v 19:24 ----------
ok, join je rychlejší. Máš pravdu (resp. máte pravdu).
Při 4 řádcích je rychlost téměř totožná.
Při 10k řádcích je SELECT cca 4x pomalejší.
29. 7. 2010 19:03:56
https://webtrh.cz/diskuse/mysql-sloupec-as-v-podmince#reply535972
Pro odpověď se přihlašte.
Přihlásit