/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177493
Tips : 31966
Nyheder : 719565
Indlæg : 6408479
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste