Gå til innhold

SQL: Sortering


Anbefalte innlegg

I en tabell har jeg "Firma" og "Kontaktperson". Det er mulig å lagre firma uten kontaktperson, men også kontaktperson uten firma.

 

Hvordan sortere en liste etter firmanavn om det finnes, gjør det ikke så sorter på kontaktperson? (alt blir blandet i listen)

Endret av Akke
Lenke til kommentar
Videoannonse
Annonse
dette står godt forklart på www.mysql.com, det er null problem å sortere etter to kolonner, ie først den ene og så den andre.

 

Jeg ville hatt en id kolonne som er unik for hver rad. dette er god skikk!

ahh.. bare å skille med komma jo :) Fant ikke sist jeg leitet på mysql.com.

 

Kjører med ID felt og har oppfylt alle normalformene tror jeg. Inget slurv i faget her nei :) Takker

Lenke til kommentar

Det løser du best med CASE - sett f.eks. ' ' (tomt felt) til z eller hva du ønsker.

 

SELECT * FROM tabell ORDER BY CASE FeltetDetSkalSorteresEtter WHEN '' THEN 'z' ELSE FeltetDetSkalSorteresEtter END, DetAndreFeltetDetSkalSorteresEtter

 

EDIT: glem ikke at du alltid burde lage en case når du skal sortere etter det norske alfabetet i mysql, ellers blir ikke rekkefølgen a-å men a-zåæø (det svenske og norske alfabetet er jo ikke likt)

Endret av ????????
Lenke til kommentar

select * from tbl_liste ORDER BY CASE WHEN firma = '' THEN kontaktpers WHEN kontaktpers = '' THEN firma ELSE kontaktpers END ASC

 

Denne fungerer slik jeg vil bortsett fra æ ø å problematikken ?????????? påpekte.

 

Prøvde:

select * from tbl_liste ORDER BY CASE WHEN firma = '' THEN CASE kontaktpers WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END WHEN kontaktpers = '' THEN CASE firma WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END ELSE CASE kontaktpers WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END END ASC

 

Men det ble helt feil sortering igjen, hva må til? :)

Lenke til kommentar
Her er en liten artikkel jeg skriver for en php side om dette,

setter pris på alle kommentarer om artikkelen!

Fin-fin! Burde ligge i en sticky tips post. :)

 

Skjønner dog fortsatt ikke hvorfor sorteringa blir helt vill med "æ ø å fiksen" inne i den andre CASE'n.

 

select * from tbl_liste ORDER BY CASE WHEN firma = '' THEN CASE kontaktpers WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END WHEN kontaktpers = '' THEN CASE firma WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END ELSE CASE kontaktpers WHEN 'æ' THEN 'å' WHEN 'ø' THEN 'æ' WHEN 'å' THEN 'ø' END END ASC

Lenke til kommentar
Ikke kjør case i case der, bare legg til ''

Da vil firma eller kontaktpers havne på bunnen når det er blankt. (eller den bokstaven du setter)

 

Denne fungerer slik jeg vil, bortsett fra æ ø å sortering.

 

select * from tbl_liste ORDER BY CASE WHEN firma = '' THEN kontaktpers WHEN kontaktpers = '' THEN firma ELSE kontaktpers END ASC

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...