webForumDet fria alternativet

Skriv ut post endast en gång

Databaser & SQL

24 svar · 754 visningar · startad av bigsky

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

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

Medlem sedan dec. 200012 464 inlägg
#2
select distinct color from t

Vill du ha den ordningen också?

Flyttas från ASP

Medlem sedan maj 2002821 inlägg
#3

Såhär ser de ut:

Set rsGetProductColors = Conn.Execute("SELECT DISTINCT * FROM tblProdVariations WHERE ColorId = " & rsGetProductsDetails("ColorId") & " ")

SKa sorteras efter färg.

Medlem sedan dec. 200012 464 inlägg
#4

Och vad är problemet nu då?

Medlem sedan maj 2002821 inlägg
#5

:) Att dupletterna ändå skrivs ut...

Medlem sedan dec. 200012 464 inlägg
#6

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?

Medlem sedan jan. 20023 327 inlägg
#7
Set rsGetProductColors = Conn.Execute("SELECT [B]DISTINCT color FROM[/B] tblProdVariations 
WHERE ColorId = " & rsGetProductsDetails("ColorId") & " ")
Medlem sedan maj 2002821 inlägg
#8

A B
-- --
4 Gul
1 Lila
3 Svart

Medlem sedan maj 2002821 inlägg
#9

Aha, det ska stå SELECT DISTINCT Color, * FROM...

Medlem sedan dec. 200012 464 inlägg
#10

Nej, det spelar absolut ingen roll. Distinct appliceras på alla kolumner i select-listan.

Medlem sedan dec. 200012 464 inlägg
#11

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
Medlem sedan maj 2002821 inlägg
#12

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.

Medlem sedan dec. 200012 464 inlägg
#13

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.

Medlem sedan maj 2002821 inlägg
#14

Hur menar du då? Hur specifierar jag det?

Medlem sedan dec. 200012 464 inlägg
#15

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?

Medlem sedan maj 2002821 inlägg
#16

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".

Medlem sedan dec. 200012 464 inlägg
#17
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
Medlem sedan maj 2002821 inlägg
#18

Tyvärr blir det samma resultat, rader där OrderNr är samma skrivs ändå ut.

Tabellen, se bifogad bild.

1.gif
Medlem sedan okt. 20041 556 inlägg
#19

Varför har OrderNr text-värde?

Medlem sedan maj 2002821 inlägg
#20

Det blir ändå ingen skillnad om man ändrar till tal...

261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)