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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvordan sortere men før GROUP BY i MySQL..~
Fra : Magnus


Dato : 10-01-04 17:41

SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY dato"

Hvordan kan jeg med MySQL få den til at først sorter alle posterne for
bagefter at samle de forskellige kategorier så jeg får den nyeste post
ifølge datoen på hver kategori.

/Magnus



 
 
Torben Brandt (10-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 10-01-04 17:47

Magnus skrev:
> SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY dato"
>
> Hvordan kan jeg med MySQL få den til at først sorter alle posterne for
> bagefter at samle de forskellige kategorier så jeg får den nyeste post
> ifølge datoen på hver kategori.

Den SQL-sætning du skriver giver da ikke mening - gør den?
Jeg er ikke helt klar over hvad du mener, men måske er det:
SELECT kategori, MAX(dato) AS dato1 FROM Afstemning
GROUP BY kategori ORDER BY dato1

Hvis ikke så prøv at forklare det lidt nærmere, eller giv et eksempel på
hvad databasen indeholder og hvad der skal komme ud.

mvh Torben


Magnus (10-01-2004)
Kommentar
Fra : Magnus


Dato : 10-01-04 18:07

SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY dato"

Jeg har en række poster med felterne en dato, en kategori og et par andre
felter.

Så vil jeg have vist den nyeste post i hver kategori.

/Magnus



"Torben Brandt" <name@domain.invalid> skrev i en meddelelse
news:btpaah$skg$1@sunsite.dk...
> Magnus skrev:
> > SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY dato"
> >
> > Hvordan kan jeg med MySQL få den til at først sorter alle posterne for
> > bagefter at samle de forskellige kategorier så jeg får den nyeste post
> > ifølge datoen på hver kategori.
>
> Den SQL-sætning du skriver giver da ikke mening - gør den?
> Jeg er ikke helt klar over hvad du mener, men måske er det:
> SELECT kategori, MAX(dato) AS dato1 FROM Afstemning
> GROUP BY kategori ORDER BY dato1
>
> Hvis ikke så prøv at forklare det lidt nærmere, eller giv et eksempel på
> hvad databasen indeholder og hvad der skal komme ud.
>
> mvh Torben
>



Jens Gyldenkærne Cla~ (10-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-01-04 23:07

Magnus skrev:

> SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY
> dato"

Den har vi set. Har du prøvet Torbens forslag?

> Jeg har en række poster med felterne en dato, en kategori og
> et par andre felter.
>
> Så vil jeg have vist den nyeste post i hver kategori.

Torbens forslag giver max-datoen for hver kategori (sammen med
kategorien).

Hvis du også vil have andre felter med, bliver det lidt mere
kompliceret. Du kan nemlig kun medtage et felt i en
grupperingsforespørgsel hvis den enten indgår i grupperingen (i
GROUP BY-linjen) eller er argument til en aggregat-funktion (fx
SUM(pris), Max(dato), Avg(alder)).

Du kan ikke løse problemet ved at aggregere dine felter - for
max(navn) og max(dato) hører ikke nødvendigvis til den samme post.
Du kan lave et join mellem grupperingsforespørgslen og en ydre
forespørgsel der tager de ekstra felter med - men jeg er ikke
sikker på at det kan gøres i mysql (kender ikke selv meget til
mysql).

I MSSQL kan man gøre som følgende eksempel:

/* Ydre forespørgsel */
SELECT   name, lastname, t.*
FROM   members m
INNER JOIN
   /* Indre forespørgsel */
   (SELECT MAX(dmaaID) as maxID, ismemberof
   FROM members
   GROUP BY ismemberof) t
ON m.dmaaID = t.maxID
ORDER BY m.ismemberof


Den indre forespørgsel finder det højeste id-nummer for hver værdi
af feltet ismemberof (svarende til dine kategorier). Den ydre
forespørgsel henter de felter der ikke skal grupperes.

For at virke efter hensigten skal de felter man laver join på (her
dmaaID) unikt referere til en post i tabellen. Hvis der fx er flere
poster med samme dato i din tabel, vil join-udtrykket tage for
mange poster med.

Jeg sætter opfølgning til databasegruppen hvor spørgsmålet hører
hjemme.

NB: Det er lettere at læse og kommentere dine indlæg hvis du
skriver dine kommentarer neden under det du kommenterer og klipper
overskydende citater væk. Læs evt. min signatur.
X-Post über 2 Gruppen, FollowUp-To dk.edb.database
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (10-01-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 10-01-04 17:56

Magnus wrote :

> SQL = "SELECT * FROM Afstemning GROUP BY kategori ORDER BY dato"
>
> Hvordan kan jeg med MySQL få den til at først sorter alle posterne for
> bagefter at samle de forskellige kategorier så jeg får den nyeste post
> ifølge datoen på hver kategori.

Dit spørgsmål er ikke direkte relateret til ASP, så du vil nok få mere ud
af at spørge i den rigtige gruppe - dvs dk.edb.database

Jeg sætter FUT til den gruppe, dvs svar på dette indlæg vil kun kunne ses i
netop den gruppe.

FUT: dk.edb.database

--
Jesper Stocholm
http://stocholm.dk
Give a man a fish and he will have food for a day,
give a man an elephant, and he will have food for a week.

Søg
Reklame
Statistik
Spørgsmål : 177550
Tips : 31968
Nyheder : 719565
Indlæg : 6408822
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste