[SQL] ORDER BY selon préférence

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [SQL] ORDER BY selon préférence

Re: [SQL] ORDER BY selon préférence

par moogli » 24 févr. 2014, 19:43

salut,

sans avoir plus dinfo que ça je dirais 3 requêtes dont seul le prédicat change.

1/ dont le datetime est non null et compris dans la journée actuelle order by ledatetime ASC
2/ dont le datetime est non null et non compris dans la journée actuelle order by ledatetime DESC
3/ tous les reste dont les id ne sont pas dans les deux premières (ou alors datetime null).

je ne peux pas t'en dire plus, il existe aussi d'autre possibilité, par exemple en donnant un poids à chaque ligne en fonction des prédicat que j'ai donné (1, 2 et 3) et au final tu ordonne sur ce prédicat, mais je ne pense pas que tu puisse ordonner de façon différente sur le datetime au milieu.


@+

[SQL] ORDER BY selon préférence

par LouReed » 24 févr. 2014, 03:07

Bonjour,

Je voudrais afficher tout un catalogue de livres dont certains produits en vente flash dans l'ordre suivant :

-------- heure croissante jusqu'a minuit-------------------------------------------------
1) Babar (vente flash ! expire aujourd'hui a 17h)
2) Le roi lion (vente flash ! expire aujourd'hui a 18h)
3) La petite sirène (vente flash ! expire aujourd'hui a 23h)
-------- heure décroissante le dernier a avoir eu une vente flash est en priorité -----------
4) Aladin (pas une vente flash mais ca l'a été hier a 16h)
5) La belle et la bête (pas une vente flash mais ca l'a été hier a 15h)
-------- les autres livres s'affichent aussi selon leur ID décroissant ------------------------
6) Les aristochats (jamais été une vente flash)
7) Boule et Bill (jamais été une vente flash)
etc...

J'ai une table "livre" avec un champ "expiration" en DATETIME.
Par exemple si je veux que Babar soit en vente flash je mets a jour le datetime dans expiration. Et étant donné mon ORDER BY cela s'affichera tout de suite en tête des résultats.

Quelqu'un aurait une idée pour construire cette requête SQL ?

Merci :priere: