Avatar billede Mik2000 Professor
22. august 2006 - 22:39 Der er 15 kommentarer og
1 løsning

Sortering af data fra mysql tabel

Hej

Jeg har en database med opskrifter. I den er der bl.a. angivet hvor mange stjerner en opskrift har fået. I opskrift tabellen gemmes id fra en tabel kaldet stjerner. Det er gjort sådan så man kan ændre antallet af stjerne mv senere.

Nu skal opskrifterne vises på en side og sorteres efter stjerner.

Hvordan gøres dette?

Hvis jeg blot skriver
SELECT * FROM opskrifter ORDER BY stjerner
så sortere den jo efter id fra stjerner tabellen som er gemt i opskrift tabellens felt stjerner.

Meningen er jo selvfølgelig at den skal sortere efter feltet antal i tabellen stjerner frem for efter id.

Hvis du er i tvivl om hvad jeg mener så spørg endelig

Håber du kan hjælpe
Avatar billede jakobdo Ekspert
22. august 2006 - 22:41 #1
Hvis du bruger: SELECT * FROM opskrifter ORDER BY stjerner
Så sortere den jo efter stjerner og ikke id.
Hvad mener du så meget ID?
Avatar billede jakobdo Ekspert
22. august 2006 - 22:43 #2
SELECT o.* FROM opskrifter AS o INNER JOIN stjerner AS s ON o.stjerner = s.id ORDER BY s.ANTAL_STJERNER
Avatar billede lorentsnv Nybegynder
22. august 2006 - 22:46 #3
Jeg ved ikke om jeg forstår dig rigtig. Nedenståeende kan bruges hvis du har 1 record for hver stjerne:

SELECT *
FROM opskrift,
    (select stjerner, count(stjerner) as antal
      from stjerner
      group by stjerner
    ) a
WHERE opskrift.stjerner = a.stjerner
ORDER BY a.antal
Avatar billede shooka Nybegynder
22. august 2006 - 22:47 #4
Nu er jeg i tvivl, om hvad du mener, kan du ikke bare gøre sådan:

SELECT * FROM opskrifter ORDER BY stjerner DESC ?
Avatar billede lorentsnv Nybegynder
22. august 2006 - 22:47 #5
Du skal nok lave en ORDER BY a.antal DESC, for at få det største tal først.
Avatar billede shooka Nybegynder
22. august 2006 - 22:48 #6
Ok, så du mener fx 5 stjerner 5 rækker?
Avatar billede Mik2000 Professor
22. august 2006 - 22:56 #7
Okay forklarer lige :)

Har to tabeller (forenkler dem her):
1: Opskrifter
id (auto - unikt)
Opskrift (selve opskriften)
stjerner (her i gemmes id fra tabellen stjerner)

2: Stjerner
id (auto - unikt)
antal (her gemmes antal og det er denne den skal sortere efter)

Hvis jeg laver en SQL på tabellen opskrifter som denne
SELECT * FROM opskrifter ORDER BY stjerner
sorteres den derfor reelt efter tabellen Stjerner's id felt.

Håber det hjælper lidt med forståelsen :)
Avatar billede Mik2000 Professor
22. august 2006 - 22:58 #8
Grunden til det er lavet i to tabeller og det er id som bruges er at der så frit kan ændres på navne, antal poster osv i antal, og de kan nemt vælges fra liste når man tilføjer opskrifter
Avatar billede lorentsnv Nybegynder
22. august 2006 - 22:58 #9
SELECT *
FROM opskrift, stjerner
WHERE opskrift.stjerner = stjerner.id
ORDER BY stjerner.antal desc
Avatar billede shooka Nybegynder
22. august 2006 - 23:03 #10
Så skal du starte med at selecte fra

SELECT * FROM opskrifter

og senere inde i while(), som jeg formoder du bruger henter du så

SELECT * FROM stjerner WHERE id='$opskriftid' ORDER BY antal DESC
Avatar billede shooka Nybegynder
22. august 2006 - 23:04 #11
Dog vil jeg råde dig til, at lave:

2: Stjerner
id (auto - unikt)
antal (her gemmes antal og det er denne den skal sortere efter)

om til:

2: Stjerner
id (auto - unikt)
opskriftid (id fra opskrifttabellen)
antal (her gemmes antal og det er denne den skal sortere efter)

Så der ikke kommer kludder i auto increment
Avatar billede Mik2000 Professor
22. august 2006 - 23:12 #12
Selvfølgelig lorentsnv :) - Point hvis du lige skriver et svar :)

Shooka - Hvordan det.
Hvis man i stjerner har:
ID    Antal
1      10
2      9
3      8
osv osv osv......
hvad skal der så stå i opskriftid?
Bare alle numrene på de opskrifter som hører til den karakter eller hvad?
Avatar billede shooka Nybegynder
22. august 2006 - 23:17 #13
Ja, for hvis en opskrift bliver slettet, eller der er mere end en stjerne pr. opskrift, så går det galt. Faktisk, skal der være én stjerne.
Avatar billede shooka Nybegynder
22. august 2006 - 23:19 #14
Eller, se bort fra det sidste. Jeg havde læst forkert... Bare:

Ja, for hvis en opskrift bliver slettet, så går det galt.
Avatar billede lorentsnv Nybegynder
23. august 2006 - 09:31 #15
svar :)
Avatar billede Mik2000 Professor
23. august 2006 - 12:20 #16
Tak til jer begge :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester