Jag vill få fram allt från Tabell där Fält är 1, finns det inget med 1 så vill jag få fram alla där Fält är 2. EDIT: nej, nej, nu hajade jag. Jag upptäckte nu att jag inte behövde göra på det här sättet trots allt, men jag sätter tråden som löst eftersom din kod borde fungera. Behöver man verkligen en union?Välj X om det finns, annars Y
Exempel:
<code>
SELECT * FROM Tabell WHERE Fält = 1 ORELSE 2
</code>
Är det möjligt att göra det i en och samma fråga?
ThomasSv: Välj X om det finnas, annars Y
Det känns ju lämpligare att göra i två steg, men annars kanske ngt i stil med:
<code>
SELECT * FROM Tabell, (SELECT count(*) c FROM Tabell WHERE Fält = 1)
WHERE c > 0 AND Fält = 1
</code>
som man sen kör en union (all?) med motsatsen:
<code>
SELECT * FROM Tabell, (SELECT count(*) c FROM Tabell WHERE Fält = 1)
WHERE c = 0 AND Fält = 2
</code>
Alltså totalt:
<code>
(SELECT * FROM Tabell, (SELECT count(*) c FROM Tabell WHERE Fält = 1)
WHERE c > 0 AND Fält = 1)
UNION
(SELECT * FROM Tabell, (SELECT count(*) c FROM Tabell WHERE Fält = 1)
WHERE c = 0 AND Fält = 2)
</code>
(otestat f.ö.)Sv:Välj X om det finnas, annars Y
Tack ändå!
ThomasSv:Välj X om det finnas, annars Y
Varför inte
SELECT * FROM Tabell, (SELECT count(*) c FROM Tabell WHERE Fält = 1)
WHERE (c > 0 AND Fält = 1) OR (c = 0 AND Fält=2)