Autor | Zpráva | ||
---|---|---|---|
ja99 Profil * |
#1 · Zasláno: 7. 6. 2013, 14:08:57
Ahoj, potrebuju vzit dva sloupce najednou (sloupec_1, sloupec_2) ale takto to nejde:
SELECT( SELECT COUNT(*) FROM `table2` ) AS zaznamy, ( SELECT sloupec_1, sloupec_2 FROM `table` WHERE `id`=1 ) AS info Samozrejme jeden sloupec takto vybrat lze,.. Diky |
||
juriad Profil |
#2 · Zasláno: 7. 6. 2013, 14:21:12
O co se snažíš? Zkus svůj cíl a strukturu databáze popsat.
|
||
ja99 Profil * |
#3 · Zasláno: 7. 6. 2013, 14:26:28
Jeste jednou, toto sql mi krasne funguje:
SELECT( SELECT COUNT(*) FROM `table2` ) AS zaznamy, ( SELECT sloupec_1 FROM `table` WHERE `id`=1 ) AS info Potrebuju ale vybrat dva sloupce najednou v druhem selectu: SELECT( SELECT COUNT(*) FROM `table2` ) AS zaznamy, ( SELECT sloupec_1, sloupec_2 FROM `table` WHERE `id`=1 ) AS info coz uz vyhodi error Operand should contain 1 column(s). Otazka je jak to prepsat tak aby se vybraly dva sloupce najednou a zachovala se +- "logika" dotazu |
||
abc Profil |
#4 · Zasláno: 7. 6. 2013, 14:27:36
Nehledáš náhodou funkci Concat?
|
||
juriad Profil |
#5 · Zasláno: 7. 6. 2013, 14:36:50
ja99:
SELECT( SELECT COUNT(*) FROM `table2` ) AS zaznamy, ( SELECT sloupec_1 FROM `table` WHERE `id`=1 ) AS info1, ( SELECT sloupec_2 FROM `table` WHERE `id`=1 ) AS info2 Ale takto se dotazy v praxi nikdy nepíší. Obzvláště velká prasárna je použití SELECTU v přední části dotazu (v seznamu sloupců), pak méně chytré databáze (nevím jak Mysql) budou ty selecty (poddotazy) provádět pro každý řádek z výsledků části FROM. Pokud bys napsal celý dotaz a ne jen jeho malou část, tak by se snad dalo poradit lépe. Občas se nejlepší použít víc jednoduchých dotazů než jeden překombinovaný. |
||
ja99 Profil * |
#6 · Zasláno: 7. 6. 2013, 14:39:34
nevim, prave proto potrebuju poradit.
Da se to resit takto ale nechci 2x zbytecne SELECTOVAT tudiz 2x prohledavat tabulku kdyz hledam dva sloupce pro jedno a to same ID. PS: ucel je "one-query" zapis, ostatne je to citelne z ukazky o co se snazim, ale jak uz sem napsal tohle uz ma 1 zbytecny select navic, kdyz by se ty dva radky z tabulky "table" urcite daly nejak vybrat jednim selectem SELECT( SELECT COUNT(*) FROM `table2` ) AS zaznamy, ( SELECT sloupec_1 FROM `table` WHERE `id`=1 ) AS info, ( SELECT sloupec_2 FROM `table` WHERE `id`=1 ) AS info2 |
||
juriad Profil |
#7 · Zasláno: 7. 6. 2013, 14:46:59
Polož dva dotazy. Bude to stejně rychlé, rozdíl bude neměřitelný, těch pár mikrosekund tě opravdu nezabije.
SELECT COUNT(*) AS zaznamy FROM `table2` SELECT sloupec_1, sloupec_2 FROM `table` WHERE `id`=1 |
||
ja99 Profil * |
#8 · Zasláno: 7. 6. 2013, 14:47:16
OK, rozdelim to na dva dotazy pro kazdou tu tabulku zvlast. Jen me zajimalo jak by se to dalo resit "one-query" dotazem.
juriad: diky, ale na to sem prisel taky, ale protste dve selectovani jednoho a toho sameho id mi neprijde vubec efektivni |
||
juriad Profil |
#9 · Zasláno: 7. 6. 2013, 14:47:56
Pokud budeš mít na sloupci id v tabulce table index, tak se tabulka prohledávat nebude, půjde se přímo pro ten jeden řádek.
|
||
ja99 Profil * |
#10 · Zasláno: 7. 6. 2013, 14:48:18
juriad: :-D presne :-)
|
||
aDAm Profil |
#11 · Zasláno: 7. 6. 2013, 15:43:42
Sice si to napsal jako one-query ale ve skutečnosti si udělal 3 selecty, kdežo když to rozdělíš na dvě query tak budeš mít jen dva selecty, to jena tak mimo téma ;)
|
||
juriad Profil |
#12 · Zasláno: 7. 6. 2013, 16:36:08
Spojování více dotazů do jednoho by mohlo mít smysl v případě, že webový server je Česku a databázový v Kazachstánu. V takovém případě je každá query ukrutně drahá, bez ohledu na její výpočetní složitost.
|
||
Časová prodleva: 11 let
|
0