| Autor | Zpráva | ||
|---|---|---|---|
| Písek Profil * |
#1 · Zasláno: 11. 12. 2010, 18:31:43
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 |
#2 · Zasláno: 11. 12. 2010, 18:41:33
Nešel by použít třeba join? Z vašeho obecného popisu nelze poznat, čeho chcete dosáhnout.
|
||
| Kcko Profil |
#3 · Zasláno: 11. 12. 2010, 19:50:21
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 tabulkaa 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 * |
#4 · Zasláno: 12. 12. 2010, 12:11:52
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 * |
#5 · Zasláno: 12. 12. 2010, 16:39:58
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 * |
#6 · Zasláno: 14. 12. 2010, 18:52:06
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 * |
#7 · Zasláno: 14. 12. 2010, 19:13:59
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 |
||
|
Časová prodleva: 16 let
|
|||
0