Query MYSQL kolommen sorteren / herorderen

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

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: 1408
Lid geworden op: 22 mei 2003, 20:23
Locatie: Gent
Uitgedeelde bedankjes: 52 keer
Bedankt: 116 keer
Te Koop forum

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, 20:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 27 keer

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: 641
Lid geworden op: 14 sep 2006, 23:55
Uitgedeelde bedankjes: 1 keer
Bedankt: 52 keer

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: 2025
Lid geworden op: 31 jul 2005, 01:08
Uitgedeelde bedankjes: 189 keer
Bedankt: 133 keer

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, 20:16
Locatie: Sint-Truiden
Uitgedeelde bedankjes: 12 keer
Bedankt: 27 keer

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: 3695
Lid geworden op: 29 okt 2007, 10:29
Twitter: cloink
Uitgedeelde bedankjes: 117 keer
Bedankt: 152 keer
Contacteer:
Provider
Te Koop forum

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: 4272
Lid geworden op: 17 apr 2019, 11:47
Uitgedeelde bedankjes: 128 keer
Bedankt: 172 keer

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

Maar beter zou zijn je database te normaliseren.
Plaats reactie

Terug naar “Development”