Jag är inte riktigt säker på hur du menar faktiskt.. Kan du ge ett exempel?
(Oavsett vad du menar så känns det som att det borde gå att lösa med nästlade select-satser, där de du har är den inre select-satsen..)
7 svar · 665 visningar · startad av Kristianstad
Hej!
Jag ska slå samman en hel del sql-frågor mha. UNION ALL. Problemet är att vissa SELECT-satser inte får någon träff alls.
SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=0
UNION ALL
SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=1
Jag skulle vilja att det genom dessa alltid blir två värden och ifall inga träffar finns ska den ge kolumnen NULL.
Hur gör jag så att det blir NULL om inga träffar hittas?
Tack på förhand!
Jag är inte riktigt säker på hur du menar faktiskt.. Kan du ge ett exempel?
(Oavsett vad du menar så känns det som att det borde gå att lösa med nästlade select-satser, där de du har är den inre select-satsen..)
Tjena!
Det är en helt vanlig tabell med fyra kolumner (Text,Nummer,Typ och Datum).
Låt oss säga att SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=0 inte ger någon träff, men SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=1 ger mig 'Kalle Anka', vill jag att min UNION ALL-sats ska ge resultatet:
NULL
Kalle Anka
Kör jag det i dagsläget blir det endast en träff:
Kalle Anka
.
ah.. nu är jag inte hundra på det här men en vild gissning: hur blir det om du kör med union istället?
Resultat trots no rows?
Nja, UNION och UNION ALL spelar ju ingen roll i det här läget.
Vad jag alltså i princip vill ha är något form av värde (eller NULL) när en SELECT-sats inte ger något resultat (no rows).
Hur gör man det?
Totalt OT. Men jag läste rubriken som något helt annat.
Hm.. En join borde kunna fungera? Titta på http://en.wikipedia.org/wiki/Join_(SQL)#Full_outer_join
jag har för mig att du använder SQL server.
select text from
(select cast(null as char) as text) dt
where not exists (select * from tblmyndigheter WHERE Nummer=6061 AND Typ=0)
union all
select text from
(select cast(null as char) as text) dt
where not exists (select * from tblmyndigheter WHERE Nummer=6061 AND Typ=1)
union all
SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=0
UNION ALL
SELECT Text FROM tblmyndigheter WHERE Nummer=6061 AND Typ=1