webForumDet fria alternativet

Joinar två tabeller och får tillbaka flera av samma kolumn men vill bara ha unika...

Databaser & SQL

2 svar · 605 visningar · startad av haxx

Medlem sedan maj 200654 inlägg
Frågan#1

Hej,

Jag har ett problem när jag verkställer (execute) min procedur, så får jag tillbaka samma produkt flera gånger. Varje produkt kan ha flera attributer och därför får jag fram samma produkt flera gånger, fast med olika bilder, och jag vill inte visa samma produkt flera gånger utan bara en gång.

För tydlighetens skull... så här ser det ut nu (i förkortad version):

ProduktID          Bild
1                  BildA
1                  BildB
1                  BildC
2                  BildD
2                  BildE

Så här skulle jag vilja att det såg ut:

ProduktID          Bild
1                  BildA
2                  BildD

Detta är min kod:

SELECT Produkt.ProduktID, Produkt.Namn, Produkt.Beskrivning, Produkt.Pris, Attribut.Bild
FROM Produkt
LEFT JOIN Attribut
ON Produkt.ProduktID = Attribut.ProduktID
ORDER BY ProduktID DESC

Jag är inte speciellt bra på sql och har försökt googla på mitt problem men hittar inget. Jag antar att det handlar om att bara tillåta ProduktID att förekomma en gång, men hur gör man det?

Tack för svar!

Medlem sedan aug. 20039 340 inlägg
#2
SELECT Produkt.ProduktID, Produkt.Namn, Produkt.Beskrivning, Produkt.Pris, Attribut.Bild
FROM Produkt
LEFT JOIN Attribut
ON Produkt.ProduktID = Attribut.ProduktID
GROUP BY Produkt.ProduktID
ORDER BY ProduktID DESC
Medlem sedan maj 200654 inlägg
#3

Här är svaret! Tack ändå!

SELECT  p.ProduktID, p.Namn, p.Beskrivning, p.Pris, MAX(a.Bild) AS Bild
FROM Produkt p
LEFT JOIN Attribut a
ON p.ProduktID = a.ProduktID
GROUP BY p.ProduktID, p.Namn, p.Beskrivning, p.Pris
ORDER BY p.ProduktID DESC
261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)