|
| Advanceret sortering i mySQL Fra : Kasper Johansen |
Dato : 27-05-04 16:17 |
|
Hej gruppe.
Jeg har en database med medarbejdere og nogle grupper som de er medlem af.
Altså en tabel med brugere og en tabel med grupper.
I bruger-tabellen er der et felt hvor id'et til grupperne står. Det er ikke
alle brugere som er medlem af en gruppe.
Jeg vil så lave et udtræk med brugere hvor de er sorteret efter gruppe, og
grupperne skal være sorteret efter titel og ikke id. Jeg tænker:
SELECT * FROM users ORDER BY groupid, navn
Men groupid skal så bare være en slags titel? Er der en nem måde at slippe
uden om problemet?
Mvh
Kasper Johansen
| |
Kim Andersen (27-05-2004)
| Kommentar Fra : Kim Andersen |
Dato : 27-05-04 18:16 |
|
> Jeg vil så lave et udtræk med brugere hvor de er sorteret efter gruppe, og
> grupperne skal være sorteret efter titel og ikke id.
Hvad med at joine de to tabeller.
SELECT * FROM user,group WHERE user._groupid = group._id GROUP BY
user._groupid ORDER BY user.name
/Kim
| |
Kristian Damm Jensen (28-05-2004)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 28-05-04 21:48 |
|
"Kim Andersen" <dingdong@dingeling> wrote in message news:<40b62248$0$503$edfadb0f@dread14.news.tele.dk>...
> > Jeg vil så lave et udtræk med brugere hvor de er sorteret efter gruppe, og
> > grupperne skal være sorteret efter titel og ikke id.
>
> Hvad med at joine de to tabeller.
>
> SELECT * FROM user,group WHERE user._groupid = group._id GROUP BY
> user._groupid ORDER BY user.name
Hvor kom de underscores fra?
Og hvad er ideen i at lave en group by frem for at sortere på groupId?
Jeg er ikke ganske sikker på, hvordan mySQL vil læse det, men en del
SQL-varianter vil brække sig (eller melde fejl) hvis du forsøger at
gruppere på noget uden at gøre det i forbindelse med en
aggregeringsfunktion.
VH
Kristian
| |
Kim Andersen (29-05-2004)
| Kommentar Fra : Kim Andersen |
Dato : 29-05-04 14:31 |
|
> > SELECT * FROM user,group WHERE user._groupid = group._id GROUP BY
> > user._groupid ORDER BY user._name
>
> Hvor kom de underscores fra?
De kommer ingen steder fra. Jeg kender intet til hvordan tabel er lave for
user og group, så det er fiktive ting.
Gik ud fra at de to tabeller kunne se ud som dette:
Tabel "user"
_id
_name
_groupid
Tabel "group"
_id
_groupname
> Og hvad er ideen i at lave en group by frem for at sortere på groupId?
> Jeg er ikke ganske sikker på, hvordan mySQL vil læse det, men en del
> SQL-varianter vil brække sig (eller melde fejl) hvis du forsøger at
> gruppere på noget uden at gøre det i forbindelse med en
> aggregeringsfunktion.
Du har ret i at det ikke virker efter hensigten. Som er at lave et udtræk
med brugere hvor de er sorteret efter gruppe, og
grupperne skal være sorteret efter titel.
Så SQL sætning kan vil se ud om dette og få den ønskede effekt.
SELECT * FROM user,group WHERE user._groupid=group._id ORDER BY
user._groupid, group._groupname
/Kim
| |
|
|