Jag har två tabeller, en för priser och en för specialpriser och de ser likadana ut. I pristabellen finns det poster som inte finns i specialpriser, men det kan också finnas poster i specialpris-tabellen som inte finns i pristabellen (jo jag vet att det är idiotiskt!). Hur ska jag få ut alla produkter från båda tabellerna med rätt pris? Primary/Foreign Key är Id.
Nu talar du inte om vilket DBMS som används, men med MySQL kan du testa
select case
when dt.spris is null then dt.pprod
else dt.sprod
end as produkt
, coalesce(dt.spris,dt.ppris) as pris
from
(select p.id as pid
, s.id as sid
, p.produkt as pprod
, s.produkt as sprod
, p.pris as ppris
, s.pris as spris
from pris p
left
join special s
on p.id = s.id
union
select p.id as pid
, s.id as sid
, p.produkt as pprod
, s.produkt as sprod
, p.pris as ppris
, s.pris as spris
from pris p
right
join special s
on p.id = s.id) dt;
Finns stöd för FULL OUTER JOIN blir subqueryn litet mindre:
select p.id as pid
, s.id as sid
, p.produkt as pprod
, s.produkt as sprod
, p.pris as ppris
, s.pris as spris
from pris p
full
outer
join special s
on p.id = s.id
Tveksamt. Du får nog försöka dig på den första varianten
select iif(dt.spris is null,dt.pprod,dt.sprod) as produkt
, iif(dt.spris is null,dt.ppris,dt.spris) as pris
from
(select p.id as pid
, s.id as sid
, p.produkt as pprod
, s.produkt as sprod
, p.pris as ppris
, s.pris as spris
from pris p
left
join special s
on p.id = s.id
union
select p.id as pid
, s.id as sid
, p.produkt as pprod
, s.produkt as sprod
, p.pris as ppris
, s.pris as spris
from pris p
right
join special s
on p.id = s.id) dt;
Möjligen kan Access vilja ha fler parenteser kring något uttryck.
257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849