J'ai une table avec deux colonnes simples que ce violon Sql fiddlerMySQL commande par deux colonnes avec la norme singulière
Je voudrais cet ordre:
id rev
==========
1 1
2 3
6 3
3 1
4 2
10 2
5 1
7 1
8 1
9 1
je veux l'ordre par avec la colonne « id », mais si 'id' = 2 alors next doit être 'id' avec la même valeur 'rev'.
C'est possible?
[EDIT] Excusez-moi, j'ai modifié le Fiddler ...
[EDIT 25/10] J'ai essayé de modifier ma requête avec @ P.Salmon réponse quand id de la première table est 'militare'. Mais il y a une erreur
1054 - Unknown column « rev » dans « liste des champs »
SELECT
`militari`.`ordine` militare,
`ordini_servizio_dati`.`id_pattuglia` rev,
`ordini_servizio_dati`.`oggetto_servizio`,
`ordini_servizio_dati`.`luogo`,
`ordini_servizio_dati`.`orario`,
`ordini_servizio_dati`.`aut_orario`,
`ordini_servizio_dati`.`siris`
FROM
`ordini_servizio_inizializzati`,
(
select
militare,
rev,
if(rev <> @p, @rn := 1, @rn := @rn + 1) rn,
if(
rev <> @p, @min := militare, @min := @min
) minid,
@p := rev p
from
`ordini_servizio_dati`,
(
select
@min := 0,
@rn := 0,
@p := 0
) r
order by
rev,
militare
) s
LEFT JOIN `schedario`.`ordini_servizio_dati` ON `ordini_servizio_inizializzati`.`id` = `ordini_servizio_dati`.`id_ordine`
LEFT JOIN `schedario`.`militari` ON `ordini_servizio_dati`.`militare` = `militari`.`matricola`
WHERE
(
`ordini_servizio_inizializzati`.`id` = '1'
)
order by
case when rev = 1 then militare else minid end,
rn
Quelle est la logique pour cela? –
pouvez-vous expliquer la commande? Je ne peux pas voir les règles pour "ORDER BY"! –
_ "Je voudrais cet ordre:" _ - basé sur _what_? Fournir un sqlfiddle seul ne va pas aider, si vous n'expliquez pas du tout à quoi cet ordre est censé être basé. De plus, la colonne 'rev' de votre violon contient trois' 2', et seulement un '3'. Et même pas l'association entre 'id' et' rev' est la même que dans votre exemple de sortie attendue ...? – CBroe