[Mysql]Custom order

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Stel ik heb een kolom order_id waarin een order_id meerdere keren kan voorkomen. Ik kan het order_id oplopend en aflopend sorteren in Mysql.
Kan ik mbv Mysql ook de data sorteren in 1 query middels een andere voorgefinieerde volgorde, bijvoorbeeld [3, 2, 1, 4, 5]. Dus eerst alle rijen met order_id = 3, dan order_id = 2, etc...

Ik kan natuurlijk een algoritme schrijven die na het ophalen van de data uit Mysql alles sorteert volgens die volgorde, maar ik vraag me af of ik het ook Mysql al voor me kan laten doen?

edit:

O, ja, ik bedoel natuurlijk dat ik het doe middels een query en niet via een stored_procedure. Ik wil echt weten of ik dit kan doen mbv een query

[ Voor 14% gewijzigd door van.der.schulting op 29-10-2010 11:01 ]


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 14:29

CoolGamer

What is it? Dragons?

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Hoe kom je aan de volgorde van die ordernummers

Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
Of kijk een stukje daaronder, over het gebruik van FIELD:

code:
1
2
3
4
5
6
7
8
9
10
11
12
create table sorteer(id int not null primary key auto_increment, intNummer int, strNummer varchar(20));
insert into sorteer(intNummer, strNummer) values(1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5');
select * from sorteer;
+----+-----------+-----------+
| id | intNummer | strNummer |
+----+-----------+-----------+
|  1 |         1 | 1         | 
|  2 |         2 | 2         | 
|  3 |         3 | 3         | 
|  4 |         4 | 4         | 
|  5 |         5 | 5         | 
+----+-----------+-----------+


Sorteren met behulp van FIELD:
code:
1
2
3
4
5
6
7
8
9
10
select * from sorteer order by field(intNummer,4,3,5,1,2);
+----+-----------+-----------+
| id | intNummer | strNummer |
+----+-----------+-----------+
|  4 |         4 | 4         | 
|  3 |         3 | 3         | 
|  5 |         5 | 5         | 
|  1 |         1 | 1         | 
|  2 |         2 | 2         | 
+----+-----------+-----------+


Het kan zowel op een int() als op een varchar() veld:
code:
1
2
3
4
5
6
7
8
9
10
select * from sorteer order by field(strNummer, 3,2,1,4,5);
+----+-----------+-----------+
| id | intNummer | strNummer |
+----+-----------+-----------+
|  3 |         3 | 3         | 
|  2 |         2 | 2         | 
|  1 |         1 | 1         | 
|  4 |         4 | 4         | 
|  5 |         5 | 5         | 
+----+-----------+-----------+

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Even doorskippen naar het onderliggende probleem hoor: waarom zou je dit willen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19-09 22:46
NMe schreef op vrijdag 29 oktober 2010 @ 11:21:
Even doorskippen naar het onderliggende probleem hoor: waarom zou je dit willen?
Dat zit ik me eigenlijk ook sterk af te vragen, wat is het nut van een order_id (ervan uitgaande dat dat op de volgorde slaat) bijhouden als je 'm niet aanhoud?

Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
NMe schreef op vrijdag 29 oktober 2010 @ 11:21:
Even doorskippen naar het onderliggende probleem hoor: waarom zou je dit willen?
Voor een plugin voor Ruby on Rails, searchlogic.

Deze methode (http://rdoc.info/github/b...ers#order-instance_method) accepteert alleen named_scope en named_cope genereert weer alleen SQL queries.
Kort gezegd mbv deze methode kan ik makkelijk en snel data sorteren in views.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Noxious schreef op vrijdag 29 oktober 2010 @ 11:23:
[...]

Dat zit ik me eigenlijk ook sterk af te vragen, wat is het nut van een order_id (ervan uitgaande dat dat op de volgorde slaat) bijhouden als je 'm niet aanhoud?
Volgens mij kun je beter enforcen dat de order_ids verschillend moeten zijn, dan hoef je niet te goochelen als ze hetzelfde zijn en je de één hoger in de lijst wil dan de ander.

Ik geloof dat zulke order_ids standaard met redelijke increments worden aangemaakt (10 ofzo), zodat je er nog iets tussen kunt kwakken als het niet goed is; geef je hem order_id 15 bijvoorbeeld.
Pagina: 1