Hur skriver man ut värden från DB innehållandes färgnamn om varje färg som kan förekomma fler gånger, bara får skrivas ut en gång?
Följande:
Lila
Svart
Lila
Gul
Ska bli:
Lila
Svart
Gul
24 svar · 754 visningar · startad av bigsky
Hur skriver man ut värden från DB innehållandes färgnamn om varje färg som kan förekomma fler gånger, bara får skrivas ut en gång?
Följande:
Lila
Svart
Lila
Gul
Ska bli:
Lila
Svart
Gul
Såhär ser de ut:
Set rsGetProductColors = Conn.Execute("SELECT DISTINCT * FROM tblProdVariations WHERE ColorId = " & rsGetProductsDetails("ColorId") & " ")
SKa sorteras efter färg.
Och vad är problemet nu då?
:) Att dupletterna ändå skrivs ut...
Du har alltså data som ser ut som
A B
-- --
1 Lila
2 Lila
3 Svart
4 Gul
vad vill du ha för resultat?
Set rsGetProductColors = Conn.Execute("SELECT [B]DISTINCT color FROM[/B] tblProdVariations
WHERE ColorId = " & rsGetProductsDetails("ColorId") & " ")
A B
-- --
4 Gul
1 Lila
3 Svart
Aha, det ska stå SELECT DISTINCT Color, * FROM...
Nej, det spelar absolut ingen roll. Distinct appliceras på alla kolumner i select-listan.
Om jag tar mitt exempel ovan med ditt önskemål så blir frågan
select min(a), b from t group by b order by b
Ett annat exempel där alla dubletter (OrderNr) skrivs ut:
Set rsGetOrders = Conn.Execute("SELECT DISTINCT(OrderNr), OrderStatus, Shipping, Payment, Amount, CustomerId, Item, tblProducts.Price, tblProducts.Pid FROM tblOrders INNER JOIN tblProducts ON tblOrders.Item = tblProducts.Pid WHERE CustomerId = " & Session("Usr") & " ORDER BY OrderNr DESC")
Använder Access 2003. De rader som har OLIKA OrderNr ska alltså skrivas ut.
Du kan inte använda distinct på en kolumn. Du måste specificera på vilket sätt man skall välja mellan de rader som har samma OrderNr.
Hur menar du då? Hur specifierar jag det?
Du får alltså ut flera rader med samma orderNr men där de andra kolumnerna har olika värden.
T.ex
orderNr ShippingStatus ... ProductPrice ProductPid
------- -------------- ... ------------ ----------
1 Shipped 47 11
1 In customs 11 47
Rätta mig om jag har fel.
Vad vill du ha för resultat av din fråga?
Du har rätt! Jag vill ha en lista med lagda order för den inloggade kunden. I tabellen ligger varje artikel i respektive order på varsin rad med kolumnen OrderNr som gemensam nämnare. Respektive orders artiklar ska alltså summeras och skrivas ut på en rad i listan.
Just nu skrivs varje rad ut där kundens kundnummer stämmer med sessionen. Det blir mer som en "Beställda artiklar-lista" än en "Lagda order-lista".
SELECT OrderNr, OrderStatus, Shipping, Payment,
Amount, CustomerId, Item, sum(tblProducts.Price) as totalPrice
FROM tblOrders INNER JOIN tblProducts ON tblOrders.Item = tblProducts.Pid
WHERE CustomerId = " & Session("Usr") & "
group by OrderNr, OrderStatus, Shipping, Payment,
Amount, CustomerId, Item
ORDER BY OrderNr DESC
Tyvärr blir det samma resultat, rader där OrderNr är samma skrivs ändå ut.
Tabellen, se bifogad bild.
Varför har OrderNr text-värde?
Det blir ändå ingen skillnad om man ändrar till tal...