Autor Zpráva
ja99
Profil *
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
O co se snažíš? Zkus svůj cíl a strukturu databáze popsat.
ja99
Profil *
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
Nehledáš náhodou funkci Concat?
juriad
Profil
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 *
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
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 *
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
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 *
juriad: :-D presne :-)
aDAm
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0