[SQL] kolommen sorteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • gerben_vd_m
  • Registratie: Oktober 2015
  • Laatst online: 17-10-2015
Hoi,

Ik probeer het nog eens.
Er speelt het volgende:
Ik heb een database ingericht als volgt

code:
1
2
3
4
5
6
7
+---------------------------------------------------+
| ID  |  A  |  B    |  C  |  D   |  F  |  G  |  H   | 
+---------------------------------------------------+
| 1   |  9  |   4   |  2  |  8   |  3  |  2   |  6  | 
| 2   |  4  |   1   |  7  |  5   |  8  |  3   |  2  | 
| 3   |  2  |   8   |  2  |  8   |  3  |  2   7  0  | 
+---------------------------------------------------+


Wat ik nu wil bereiken is dat het per record op aflopende volgorde komt te staan als ik hem oproep

Select database
Order by A

Dan krijg ik de gehele database gesorteerd op de getallen die in colum A staan.

Wat ik nu probeer te bereiken dat ik record met ID 1 op volgorde van grootte krijg dus:

1 |   9  | 8 | 6 | 4 | 3 | 2 | 2 | 

Dus eigenlijk : ID | A | D | H | B | F | C | G |

Voor de andere records krijg je natuurlijk een andere volgorde.

Ik hoop dat dit duidelijker is dan mijn vorige post.

Groet,

Gerben

[ Voor 2% gewijzigd door RobIII op 08-10-2015 12:29 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • endness
  • Registratie: Maart 2006
  • Laatst online: 12-10 21:00
Als ik het goed begrijp wil je dus per rij sorteren op de waarden van de kolommen van die rij?

Acties:
  • +1 Henk 'm!

  • mark117
  • Registratie: Oktober 2002
  • Laatst online: 12:31
Records kan je sorteren, kolommen niet (dat is iets wat in je applicatie zou moeten afhandelen)

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 14:02
Dat is natuurlijk een gekke situatie. Het lijkt erop dat je database structuur niet goed is. Elke kolom heeft waardevolle data (key, value). Op het moment dat je die gaat husselen per record, weet je dus niet welke data je daadwerkelijk voor je hebt (key/kolomnaam is onbekend).

Als je eigenlijk een tabel hebt met een x aantal kolommen met dezelfde data, die je eigenlijk op een hoop mag gooien, dan zou je dit eigenlijk met een andere tabel moeten doen.

In postgresql kun je werken met arrays, waarmee dit misschien zou kunnen. Of MSQL dit heeft, weet ik niet.

Verder kun je dit natuurlijk oplossen door een view te bouwen:

SELECT id, A FROM tbl
UNION SELECT id, b FROM tbl
UNION SELECT id, c, FROM tbl

(waarmee je eigenlijk je verkeerde db structuur een beetje maskeert) Je krijgt hiermee echter geen rijen zoals je die wil, maar wel alle waardes op volgorde.

"Chaos kan niet uit de hand lopen"


Acties:
  • +2 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

mark117 schreef op donderdag 08 oktober 2015 @ 12:06:
Records kan je sorteren, kolommen niet (dat is iets wat in je applicatie zou moeten afhandelen)
Je datamodel ten spijt - wat idd op het eerste gezicht een beetje onjuist lijkt maar dat is zonder verdere details niet echt te zeggen - is dit inderdaad typisch iets wat je in je applicatie opgelost kan worden. Het is strict gezien gewoon een presentatie-ding. Je hoeft niet alle problemen in je database op te lossen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • gerben_vd_m
  • Registratie: Oktober 2015
  • Laatst online: 17-10-2015
Het is inderdaad een presentatie ding, ik moet op een pagina de inhoud van 1 record op volgorde krijgen en zal met php dus een msql statement moeten maken om dat voor elkaar te krijgen.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Want gewoon even sort() aanroepen nadat je de data hebt opgehaald is geen optie? Dat is natuurlijk quatsch :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • _Garu_
  • Registratie: Juni 2014
  • Laatst online: 28-12-2024
Dus als ik het goed begrijp gaat het helemaal niet over een database issue, maar over een reeks van getallen die je op volgorde wilt krijgen binnen 1 record

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nou ja het is natuurlijk een database issue als je die kolommen per se wilt sorteren in je database query. Wat gewoon een ramp gaat zijn om te doen, let's just not go there ;)

Topictitel iets aangepast

[ Voor 13% gewijzigd door .oisyn op 08-10-2015 12:29 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • gerben_vd_m
  • Registratie: Oktober 2015
  • Laatst online: 17-10-2015
Dat licht ging mij ook op toen ik de vorige post las, het komt echter wel uit een MSQL database en om het even helemaal duidelijk te maken staan de getallen in een volgorde die weer gekoppeld is aan een andere tabel waar ik de volgorde weer nodig heb.

Ik zal even uit de doeken doen waar ik mee bezig ben dan begrijpt iedereen het.

ik heb twee tabellen
1 waar ik getallen in breng die behoren bij zaken die ik in een andere tabel heb staan

Tabel 1
+-----------+
| ID | A |
+---------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
| 6 | F |
enz
+------+
Deze waarden zijn gekoppeld via de ID aan de eerste database.

Ik krijg dus per record :

A= 9
D= 8
H= 6
B= 4
F= 3
C= 2
G= 2

Als mijn database structuur niet goed is dan hoor ik graag andere suggesties omdat ik nog vroeg in het traject ben en het dus nog wel kan veranderen.

Acties:
  • 0 Henk 'm!

  • incaz
  • Registratie: Augustus 2012
  • Laatst online: 15-11-2022
Je databasestructuur is niet goed.

Je hebt een tabel nodig met

code:
1
2
3
4
5
6
7
8
9
ID | Letter | Getal
-------------------
1  | A      | 9
1  | B      | 4
1  | C      | 2
2  | A      | 4
2  | B      | 1
2  | C      | 8
...etc

[ Voor 4% gewijzigd door incaz op 08-10-2015 12:48 ]

Never explain with stupidity where malice is a better explanation


Acties:
  • 0 Henk 'm!

  • gerben_vd_m
  • Registratie: Oktober 2015
  • Laatst online: 17-10-2015
Ok dan zal ik een dergelijke structuur opzetten maar dan binnen 1 ID kun je dan gewoon sort gebruiken om de volgorde van groot naar klein te krijgen?

Acties:
  • 0 Henk 'm!

  • mark117
  • Registratie: Oktober 2002
  • Laatst online: 12:31
Dat kan zeker:

SQL:
1
SELECT * FROM TABLE ORDER BY ID, Getal DESC

Acties:
  • 0 Henk 'm!

  • gerben_vd_m
  • Registratie: Oktober 2015
  • Laatst online: 17-10-2015
Ik kom terug als ik mijn database heb aangepast en bedank iedereen om mij op het goede pad te brengen want soms zie je door de bomen het bos niet meer
Pagina: 1