Query MYSQL kolommen sorteren / herorderen

Alles over programmeren en development binnen de IT-wereld
Gebruikersavatar
guntherstassen
Pro Member
Pro Member
Berichten: 316
Lid geworden op: 09 feb 2011, 19:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 21 keer

Bericht

Dag iedereen,
ik heb een vraag ivm een query in MySQL.

Ik heb de volgende tabel :
id | naam | wedstrijd1 | wedstrijd 2 | wedstrijd 3
1 | TEST | 10 | 25 | 12

Ik doe een query op ID 1 maar ik wil de kolommen sorteren van grootste value naar kleinste value, eigenlijk het volgende resultaat bekomen:

id | naam | wedstrijd2 | wedstrijd 3 | wedstrijd 1
1 | TEST | 25 | 12 | 10

Gaat dit in 1 query of ben ik verplicht meerdere query's en tijdelijke tabellen te gebruiken?
Met gewoon sort by werkt het natuurlijk niet omdat die enkel in die kolom gaat sorteren en de kolom niet van plaats gaat veranderen binnen de query.
sky
Elite Poster
Elite Poster
Berichten: 1398
Lid geworden op: 22 mei 2003, 18:23
Locatie: Gent
Uitgedeelde bedankjes: 35 keer
Bedankt: 56 keer

Bericht

Waarom wil je dat?
Nu heb je maar 1 record in die tabel.
Wat als je 100-den records in die tabel hebt, veel kans dat je meerdere keren dezelfde waarde als grootste hebt.

Ben wel thuis in query’s, vooral op Oracle, maar dit is de eerste keer dat ik zo een case zie.
Gebruikersavatar
guntherstassen
Pro Member
Pro Member
Berichten: 316
Lid geworden op: 09 feb 2011, 19:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 21 keer

Bericht

Er staan meerdere records (+3000) maar het zijn eigenlijk 12 wedstrijdnummers met waarde er in. (integer)
De eerste 5 behaalde punten moet ik bij elkaar tellen en dan sorteren van groot naar klein, de rest telt niet mee van punten.
Dacht het in 1 beweging te kunnen doen met een query maar denk dat ik beter alles in array kan stoppen en dan sort() kan doen.
dupondje
Premium Member
Premium Member
Berichten: 638
Lid geworden op: 14 sep 2006, 21:55
Uitgedeelde bedankjes: 1 keer
Bedankt: 41 keer

Bericht

Eigenlijk is uw tabel structuur verkeerd.
Maar 2 tabellen ipv 1.

1 met
ID en naam

Andere met
ID - wedstrijd - score

En dan kan je perfect doen wat je wil :)
Gebruikersavatar
Block
Erelid
Erelid
Berichten: 1998
Lid geworden op: 30 jul 2005, 23:08
Uitgedeelde bedankjes: 133 keer
Bedankt: 87 keer
Recent bedankt: 1 keer
Provider

Bericht

Create kolom “wedstrijd 4”
Copy kolom
Drop kolom wedstrijd 1
Rename eventueel.
SELECT * FROM users WHERE clue >0;
Gebruikersavatar
guntherstassen
Pro Member
Pro Member
Berichten: 316
Lid geworden op: 09 feb 2011, 19:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 21 keer

Bericht

Ik heb het ondertussen opgelost om eerst het resultaat van de query in een array te droppen en dan zelf een sortering op de array te doen.
Merci voor jullie hulp
Gebruikersavatar
cloink
Elite Poster
Elite Poster
Berichten: 3687
Lid geworden op: 29 okt 2007, 09:29
Twitter: cloink
Uitgedeelde bedankjes: 85 keer
Bedankt: 128 keer
Provider
Te Koop forum

Bericht

Dat gaat uiteraard werken, maar is wel allerminst efficient. Echt eens Googlen naar data normalisatie en database design, want dit lijkt er inderdaad niet echt op... :angel:
ooh. shiny.
DarkV
Elite Poster
Elite Poster
Berichten: 4123
Lid geworden op: 17 apr 2019, 09:47
Uitgedeelde bedankjes: 103 keer
Bedankt: 140 keer

Bericht

Je kan dit oplossen door je tabel te pivoteren... https://stackoverflow.com/questions/139 ... ivot-table

Maar beter zou zijn je database te normaliseren.