Outils pour utilisateurs

Outils du site


devweb:mysql (lu 49578 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
devweb:mysql [23-03-2020 10:47]
edmc73
devweb:mysql [15-04-2021 14:28] (Version actuelle)
edmc73
Ligne 11: Ligne 11:
 ===== Cas d'une table de config avec une date ===== ===== Cas d'une table de config avec une date =====
  
-^ id      ^ user_id       ^ date          ^ name +^ id      ^ user_id       ^ date          ^ name ^ 
-| 1  | 1 | 2020-03-10 |  toto |+| 1  | 1 | 2020-03-10 | toto |
 | 2  | 1 | 2020-03-20 | super toto | | 2  | 1 | 2020-03-20 | super toto |
 | 3  | 2 | 2020-01-01 | tata | | 3  | 2 | 2020-01-01 | tata |
Ligne 26: Ligne 26:
          GROUP BY t2.user_id          GROUP BY t2.user_id
          HAVING t1.date= MAX(t2.date))          HAVING t1.date= MAX(t2.date))
 +</code>
 +
 +^ user_id ^ name ^
 +| 1 | super toto |
 +| 2 | tata |
 +
 +Par contre, si vous avez des date dans le futur, il faudra utiliser cette requête
 +<code sql>
 +select user_id, name
 +from users t1
 +WHERE EXISTS(SELECT 1
 +         FROM users t2
 +         WHERE t2.user_id = t1.user_id and t2.date<=now()
 +         GROUP BY t2.user_id
 +         HAVING t1.date= MAX(t2.date))
 +</code>
 +
 +
 +Variantes de la 1ère requête qui semble plus rapide
 +<code sql>
 +select t1.user_id,t1.name
 +from users as t1, 
 +(
 +  select user_id, MAX(date) as date
 +  from users
 +  group by user_id
 +) as t2
 +where
 +t1.user_id=t2.user_id and t1.date=t2.date
 </code> </code>
devweb/mysql.1584956863.txt.gz · Dernière modification: 23-03-2020 10:47 de edmc73