Autor | Zpráva | ||
---|---|---|---|
sqld Profil * |
#1 · Zasláno: 11. 2. 2013, 09:25:24
Potřeboval bych poradit s následujícím výběrem:
společný výběr z 3 tabulek tab1, tab2, tab3 (každá má položky datumS, datumE), z každé tabulky výběr prvních tří položek kdy datumE nesmí být starší než aktuální datum a setříděno dle datumE od nejaktuálnější a výsledných 9 položek (jsou-li, jinak méně) setříděno nejdříve aby aktuální datum bylo v intervalu datumS a datumE a pak dle datumuE nejaktuálnější. např.: tab1.a: 25.12.2012 1.1.2013 tab1.b: 10.2.2013 11.2.2013 tab1.c: 1.9.2012 5.9.2012 tab1.d: 22.3.2013 25.3.2013 tab2.a: 20.12.2010 1.1.2011 tab2.b: 10.2.2013 13.2.2013 tab2.c: 4.9.2013 5.9.1013 tab2.d: 20.1.2013 26.1.2013 tab3.a: 2.2.2010 5.2.2010 tab3.b: 13.1.2013 12.4.2013 tab3.c: 12.10.2013 15.10.2013 tab3.d: 30.10.2013 10.11.2013 vysledek k 11.2.2013: tab1.b: 10.2.2013 11.2.2013 tab2.b: 10.2.2013 13.2.2013 tab3.b: 13.1.2013 12.4.2013 tab1.d: 22.3.2013 25.3.2013 tab2.c: 4.9.2013 5.9.1013 tab3.c: 12.10.2013 15.10.2013 tab3.d: 30.10.2013 10.11.2013 |
||
Tori Profil |
#2 · Zasláno: 11. 2. 2013, 10:32:32
Asi tohle?
(select * from tabulka1 where datumE <= '2013-02-11' order by datumE limit 3 union all select * from tabulka2 where datumE <= '2013-02-11' order by datumE limit 3 union all select * from tabulka2 where datumE <= '2013-02-11' order by datumE limit 3 ) order by (datumS > '2013-02-11'), datumE |
||
Kajman Profil |
Tori:
Ve where máš asi obráceně podmínku (teda máš to podle zadání, ale myslím, že ho napsal obráceně :) a jednotlivé selecty asi bude potřeba uzávorkovat, aby se třetí limit nebral pro celý výsledek union. SELECT * FROM ((SELECT 'tab1' AS zdroj, datumS, datumE FROM tab1 WHERE datumE >= '2013-02-11' ORDER BY datumE LIMIT 3) UNION ALL (SELECT 'tab2' AS zdroj, datumS, datumE FROM tab2 WHERE datumE >= '2013-02-11' ORDER BY datumE LIMIT 3) UNION ALL (SELECT 'tab3' AS zdroj, datumS, datumE FROM tab3 WHERE datumE >= '2013-02-11' ORDER BY datumE LIMIT 3)) x ORDER BY '2013-02-11' < datumS, datumE |
||
sqld Profil * |
#4 · Zasláno: 11. 2. 2013, 10:57:26
Díky pánové, zkusím to....tohle bych dohromady nedal..
Sloupce datumS a datumE jsou typu DATETIME. Místo přesného data (jelikož chci k aktuálnímu datu) tedy dám DATETIME('NOW','localtime') |
||
sqld Profil * |
#5 · Zasláno: 11. 2. 2013, 12:44:05
Ještě jedna důležitá věc, používám SQLite db? Platí to tak i u ní?
|
||
Časová prodleva: 11 let
|
0