Avatar billede thomas_j Nybegynder
28. februar 2010 - 22:58 Der er 3 kommentarer

Listning af data fra 2 tabeller

Jeg har følgende tabeller

Kunde:
kid, fornavn, efternavn

Product
id, kid, product, pris


Hver kunde kan kun have 3 produkter.

Er der mulighed for at få det skrevet ud som følgende

kid, fornavn, efter, product1, product2pris, product2, product2pris, product3, product3pris med 1 sql sætning (evt. en SP)

Mvh.
Thomas
Avatar billede arne_v Ekspert
28. februar 2010 - 23:09 #1
Du har to muligheder:

1) en simpel join mellem de to tabeller og så lad din applikation vise 1-3 rækker i en linie som du vil have.

2) lave en dobbelt self left join.
Avatar billede arne_v Ekspert
01. marts 2010 - 00:20 #2
re 1)

SELECT kunde.kid,kunde.fornavn,kunde.efternavn,produkt.prodnavn,produkt.prodpris
FROM kunde JOIN produkt ON kunde.kid=produkt.kid
ORDER BY kunde.kid,produkt.pid;

re 2)

SELECT k.kid,k.fornavn,k.efternavn,p1.prodnavn,p1.prodpris,p2.prodnavn,p2.prodpris,p3.prodnavn,p3.prodpris
FROM ((kunde k LEFT JOIN produkt p1 ON k.kid=p1.kid)
    LEFT JOIN produkt p2 ON k.kid=p2.kid AND p1.pid < p2.pid)
    LEFT JOIN produkt p3 ON k.kid=p3.kid AND p2.pid < p3.pid
WHERE p1.pid = (SELECT MIN(pid) FROM produkt pp WHERE pp.kid=k.kid)
      AND (p3.pid IS NULL XOR (SELECT COUNT(pid) FROM produkt pp WHERE pp.kid=k.kid)=3)
ORDER BY k.kid;
Avatar billede arne_v Ekspert
26. april 2010 - 03:46 #3
all set ?
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