J'ai un problème avec une instruction SQL: En utilisant cetteMySQL: Problème avec max() et le groupe de - mauvaises valeurs
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
a_au.re as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
-je obtenir ce résultat:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2200, 0
31, 10, '2010-07-14', 2205, 0
31, 10, '2010-07-14', 2206, 2
31, 10, '2010-07-14', 2207, 0
31, 10, '2010-07-14', 2210, 2
31, 10, '2010-07-15', 2211, 0
31, 10, '2010-07-14', 2213, 1
32, 10, '2010-07-14', 2203, 0
32, 10, '2010-07-14', 2204, 0
32, 10, '2010-07-14', 2208, 2
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
Maintenant, je veux pour obtenir une ligne de résultat pour une combinaison ID et date. Aussi, je veux obtenir cette ligne de résultat avec le numéro RE le plus élevé.
Alors j'écris ma déclaration:
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
max(a_au.re) as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
group by ID, date
Maintenant, j'obtenir ce résultat:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2213, 0
31, 10, '2010-07-15', 2211, 0
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
Tout semble bien se passer, j'ai une ligne de résultat par jour/combinaison d'identité et la ligne avec le numéro RE le plus élevé. Mais: la colonne STAT n'a pas les valeurs correctes! La ligne
31, 10, '2010-07-14', 2213, 0
doit avoir le statut 1:
31, 10, '2010-07-14', 2213, 1
Donc, il doit y avoir une erreur dans ma déclaration. Il semble que MySQL prenne la première valeur de colonne STAT trouvée. Mais je veux avoir le correspondant.
Que dois-je faire? J'ai vu d'autres sujets à ce sujet comme ici: Selecting all corresponding fields using MAX and GROUP BY mais je ne peux pas le transférer à mon instruction SQL.
Merci beaucoup d'avance & Cordialement.
Ajout de la balise 'most-n-per-group'. Cliquez sur cette étiquette pour voir des dizaines d'autres messages avec des problèmes similaires. –