Outils pour utilisateurs

Outils du site


devweb:mysql (lu 49575 fois)

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
devweb:mysql [29-07-2014 10:45]
edmc73 créée
devweb:mysql [15-04-2021 14:28] (Version actuelle)
edmc73
Ligne 3: Ligne 3:
  
 A tester en alternative de phpmyadmin => http://www.chive-project.com/ A tester en alternative de phpmyadmin => http://www.chive-project.com/
 +
 +===== Tuto =====
 +
 +  * http://www.mysqltutorial.org/
 +
 +
 +===== Cas d'une table de config avec une date =====
 +
 +^ id      ^ user_id       ^ date          ^ name ^
 +| 1  | 1 | 2020-03-10 | toto |
 +| 2  | 1 | 2020-03-20 | super toto |
 +| 3  | 2 | 2020-01-01 | tata |
 +
 +je veux les derniers nom des utilisateurs
 +
 +<code sql>
 +select user_id, name
 +from users t1
 +WHERE EXISTS(SELECT 1
 +         FROM users t2
 +         WHERE t2.user_id = t1.user_id
 +         GROUP BY t2.user_id
 +         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>
devweb/mysql.1406623555.txt.gz · Dernière modification: 29-07-2014 10:45 de edmc73