Avatar billede jps6kb Novice
20. marts 2013 - 09:37 Der er 4 kommentarer og
1 løsning

JOIN med tabel som måske ikke har rækker

Hej,

Jeg har brug for at lave følgende join:

Produkt
-------
id
navn
gruppe_id

Pris
----
id
produkt_id
pris
bruger_id


Jeg skal bruge et resultat, hvor jeg kan søge alle produkter fra en gruppe ud, joine med priser for en bestemt bruger - men! hvis der er et produkt, som brugeren ikke har en pris på (ingen række) så skal pris være 0 eller null.

How to?
Jeg har prøvet med LEFT JOIN, INNER JOIN og FULL JOIN, men den dør altid på, at der er bruger_id på Pris... så tager den ikke o-værdier med.

Hvis der er tre produkter, men kun en pris for den pågældende bruger, skal jeg bruge følgende resultat:

produktid  navn    pris
1          Vare A  10
2          Vare B    0
3          Vare C    0
Avatar billede Syska Mester
20. marts 2013 - 09:45 #1
Hvordan ser din join ud? ( Du skal i hvert fald bruge LEFT eller RIGHT JOIN )

Det burde virke ...
Avatar billede jps6kb Novice
20. marts 2013 - 09:53 #2
SELECT        Produkt.id, Produkt.navn, Pris.pris
FROM          Produkt FULL OUTER JOIN
                      Pris ON Produkt.id = Pris.produkt_id
WHERE        (Pris.bruger_id = 1) AND (Produkt.gruppe_id = 15)

Hvis jeg fjerner "(Pris.bruger_id = 1)". så spiller det fint, men så får jeg ud for alle brugere, og det dur ikke.
Avatar billede Syska Mester
20. marts 2013 - 09:58 #3
FULL OUTER er i hvert fald lidt forkert, da den også vil tage NULL joins med i din produkt table.

Tag og smid userid ind i din "join"

Pris ON Produkt.id = Pris.produkt_id AND Pris.UserId = 1
Avatar billede jps6kb Novice
20. marts 2013 - 10:03 #4
Fedt! Det virkede. Det var da lidt fjollet, at jeg ikke selv tænkte på det. Mange mange tak. Smider du et svar?
Avatar billede Syska Mester
20. marts 2013 - 10:12 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester