Autor Zpráva
Písek
Profil *
Ahoj,
mám takovýhle dotaz:

select sloupec, (select sloupec1 from tabulka 1 LIMIT 1) as sloupec1 from tabulka


já bych ale potřeboval nějak v té subquery vybrat více sloupečků..:
select sloupec, (select sloupec1, sloupec2  from tabulka 1 LIMIT 1) as sloupec1 from tabulka

To se mi ale nedaří.. jediné řešení je pro mě zatím udělat pro každý sloupec vlastní subquery, ale to asi nebude zrovna výkonově nejrychlejší řešení..

Jak tedy v jedné subquery můžu vybrat více sloupečků?
díky
Alphard
Profil
Nešel by použít třeba join? Z vašeho obecného popisu nelze poznat, čeho chcete dosáhnout.
Kcko
Profil
Písek:
Zkus to takhle, nebude to úplně systémové, ale lepší než nic.

select sloupec, (select CONCAT_WS("#", sloupec1, sloupec2)  from tabulka 1 LIMIT 1) as sloupec1 from tabulka


a pak budes mit v sloupec1 hodnoty jednotlivých sloupců oddělené znakem "#" a pokud to potřebujes jen k nějakému výpisu a ne k dalšímu JOIN-ování tak by to mělo stačit.
Písek
Profil *
Mám dvě tabulky:

tab1
id cislo idd
1  2     2
2  33   3
3  888 2


tab2
id nazev
1  dd
2  aa
3  bb


Tabulky se linkují dohromady pomocí idd z tab1 a id z tab2 a já potřebuju vybrat pro každý nazev z tab2 největší a nejmenší cislo z tab1 a zároveň vrátit celkový počet idd pro každé id (tedy pro id 2 jsou dvě idd které obsahují dvojku, pro id3 je to jedno idd co obsahuje trojku)
Kajman_
Profil *
select * from
tab2 t2
left join (select idd, min(cislo) minc, max(cislo) maxc, count(*) pocet from tab1 group by idd) t1
on t2.id=t1.idd
Písek
Profil *
Kajman:
Super, podle toho sem si sestavil co potřebuju, už mi chybí jen jedna věc ke štěstí:

minc mi vrátí nejmenší číslo, maxc největší..... ale já zároveň potřebuju vrátit ještě jedno pole, které je ve stejném řádku jako maxc (id autora)

Se subquery navíc by řešení vypadalo takto:

select * from
tab2 t2
left join (select idd, min(cislo) minc, max(cislo) maxc, count(*) pocet, (select autor from tab1 where cislo = maxc) as autor from tab1 group by idd) t1
on t2.id=t1.idd


Ale jde to nějak udělat bez té subquery navíc?
Kajman_
Profil *
select t2.*, t1.*, tmax.autor
from tab2 t2
left join (select idd, min(cislo) minc, max(cislo) maxc, count(*) pocet from tab1 group by idd) t1
     on t2.id=t1.idd
left join tab1 tmax
     on tmax.cislo = t1.maxc

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