Autor Zpráva
dot
Profil *
zdravim mam takovyto SQL dotaz:
SELECT z1, z2
FROM t1
WHERE (z2 IN (
SELECT MAX(z2)
FROM t1
WHERE (z3 = x) AND z2 LIKE ('d1')
UNION ALL
SELECT MIN(z2)
FROM t1
WHERE (z3 = x) AND z2 LIKE ('d2')))

docela v pohode funguje, vybira minimalni zaznam a maximalni zaznam, ja bych ale potreboval aby kdyz neni jedna z techto hodnot naplnena tak aby sql vratil hodnotu toho naplneneho a toho druheho nenaplneneho v podobe nejake znaku

diky
Kajman
Profil *
Nevím co poradit... dělat v dotazu max(z2) z omezení z2 like('d1') mi nepřijde nijak přinosné, leda, že by to mělo dát přednost 'D1' před 'd1'.

A otázku jsem také moc nepobral. Nenaplňené znamená, že v tom řádku jsou null hodnoty, nebo tam ten řádek není? Pokud první varianta, tak by to mohl vyřešit if kolem z1 a z2, pokud druhá, tak by snad šel dát další union s "nějakým znakem" a dát limit 2.
dot
Profil *
potrebuju aby mi vratil jak maximalni tak i minimalni, i kdyz neni zadny zaznam dejme tomu pro min. pri vykonani tohoto datazu vraci pokud neni zaznam jen jedno pole a ja potrebuji 2

pokud neni min(z2) pak vrat 'AAA', jinak vrat z2 a to same i u max
Kajman
Profil *
Příjde mi to stále jako divný požadavek, ale snad by to mohlo být takhle nějak:

select * from (SELECT z1, z2 FROM t1 WHERE (z3 = x) AND z2 LIKE ('d1') AND z2=MAX(z2)
UNION ALL
SELECT null,'AAA' limit 1) as tmp
UNION ALL
select * from (SELECT z1, z2 FROM t1 WHERE (z3 = x) AND z2 LIKE ('d2') AND z2=MIN(z2)
UNION ALL
SELECT null,'AAA' limit 1) as tmp;

No, jen bude třeba použít vyplňovací hodnoty odpovídající datovým typům z t1.
dot
Profil *
dik, ten dotaz je samozrejme pro tuhle konf. upraven, je jasne ze asi nedava smysl, je to jen pro predstavu jak vypada kdybych dosadil za z1,z2,t1 normalni hodnoty ktere pouzivam uz by to asi smysl davalo. Jinak s tim tvym dotazem mam problem

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
Kajman
Profil *
No, jo, to byl jen náznak :-)

Prostě si tam dej ty správné selecty na maximum a minimum.
dot
Profil *
nene tudy cesta nevede, samo ze sem si tam dosadil sve selecty, presto dik za snahu
dot
Profil *
mozna by chtelo jeste upresnit ze pouzivam MSSQL
Toto téma je uzamčeno. Odpověď nelze zaslat.

0