Just nu i M3-nätverket
Gå till innehåll

Select Distinct


Bratell

Rekommendera Poster

Jag har ett litet problem med en select-sats. Det finns säkert en enkel lösning, men jag kommer inte på den.

 

Jag har en order-tabell i en e-handelssajt. Varje rad i tabellen motsvarar en såld artikel och en ordrana hålls ihop av en kolumn som heter order_nr.

 

Det jag skulle kunna göra är att:

 

select distinct(order_nr) from order_tbl

 

men då får jag såklart bara ut order_nr-kolumnen. Jag vill såklart ha resten också. Blandar jag in ASP i det hela blir det lätt, men jag vill undvika det.

 

Just nu ser SQL-satsen ut så här:

 

select distinct(order_nr),* from order_tbl o

inner join kund_tbl k

on o.kund_id=k.kund_id

inner join artikel_tbl a

on o.artikel_id=a.artikel_id

where @strSearchType like @strSearchString;

 

där @strSearchType är ett kolumnnamn och @strSearchString överraskande nog är en söksträng. =)

 

Är det någon som har en lösning?

Länk till kommentar
Dela på andra webbplatser

Jag skulle rekommendera dig att titta lite mer på GROUP BY, vilket är mycket snabbare än DISTINCT som med många rader i tabellen tar oerhörd tid på sig att hitta rätta raderna.

 

prova

 

SELECT order_nr FROM order_tbl GROUP BY order_nr

 

Länk till kommentar
Dela på andra webbplatser

Det funkar fint, då listar den alla unika ordernummer. Men lägger jag till t ex:

 

select order_nr,artikel_id from order_tbl group by order_nr

 

så får jag felmeddelandet:

 

"Column 'order_tbl.artikel_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."

 

Lägger jag till artikel_id på GROUP BY:

 

select order_nr,artikel_id from order_tbl group by order_nr,artikel_id

 

så får jag inte unika poster längre. Jag har tyvärr ingen SQL-bok här att läsa och jag har inte hittat någon bra sida att läsa om detta.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...