Jeg kan ikke umiddelbart greje, hvordan jeg får sorteret et udtræk af en database, før jeg kører en GROUP BY på rækkerne.
Jeg har to tabeller: En med firmaer og en med kategori-id'er, der kan knyttes til firmaer med en "mange-til-manger"-relation. Flere kategorier til ét firma sorteres efter en kollonne "sort".
Jeg vil lave et udtræk, der giver mig alle firmaer samt deres først-sorterede kategori (dvs sort = 1 eller bare den mindste værdi).
Laver jeg en GROUP BY på firmaer, kan jeg ikke få den først-sorterede kategori med ud.
Fx. SELECT firma, kat_firma.kat_id, kat_firma.sort FROM firmaer LEFT JOIN kat_firma ON kat_firma.firma_id = firmaer.id GROUP BY firma
Dette udtræk giver mig bare tilfældige værdier for "sort" (jeg regner med, at jeg får værdien på den først indtastede kategori ud).
Udelader jeg GROUP BY og istedet indsætter "ORDER BY firma, sort" får jeg naturligvis den korrekte sortering.
Kan det lade sig gøre, at sorterere rækkerne, der bliver brugt i en GROUP BY? Jeg kan se, at det ville løse mit problem, hvis jeg kunne sortere efter "firma, sort" inden den beregner GROUP BY
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Ja, hvis det er det du skal have, så mister du det. Det er faktisk non-standard SQL overhovedet at kunne tage flere felter med end der står i din GROUP BY.
Næ, men jeg kunne bruge det til at finde ud af, hvilke rækker der tilfældigvis også havde den mindste værdi for sort:
SELECT firma, kat_firma.kat_id, kat_firma.sort, MIN(kat_firma.sort) as min_sort FROM firmaer LEFT JOIN kat_firma ON kat_firma.firma_id = firmaer.id GROUP BY firma HAVING kat_firma.sort = MIN(kat_firma.sort)
Det hjælper dog ikke så meget :o)
Synes godt om
Slettet bruger
03. november 2003 - 20:25#10
Der burde ikke være noget i vejen for at du kombinerer GROUP BY og ORDER BY f.eks:
SELECT firma, kat_firma.kat_id, kat_firma.sort FROM firmaer LEFT JOIN kat_firma ON kat_firma.firma_id = firmaer.id GROUP BY firma ORDER BY kar_firma.sort
Du kan først bruge sub-SELECTs fra version 4.1. Måske kan du oprette en TEMPORARY TABLE med data fra din første query hvor du bruger ORDER BY, og derefter udtrække fra den med en query der bruger GROUP BY.
Dem, der deltog kontruktivt i dette spørgsmål, må gerne lægge svar, så fordeler jeg point
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.