Autre méthode : Code : Sélectionner tout - Visualiser dans une fenêtre à part 123456select t2.* from (select user_id , max (finished_at) as finished_at from [action] group by user_id ) t1 inner join action t2 on t1.user_id = t2.user_id and t1.finished_at = t2.finished_at
select t2.* from (select user_id , max (finished_at) as finished_at from [action] group by user_id ) t1 inner join action t2 on t1.user_id = t2.user_id and t1.finished_at = t2.finished_at
Si l'on choisit la méthode par jointure externe (méthode 3), il faut veiller à sélectionner une colonne "not null", sans quoi le résultat peut être faussé . En général, on choisit en ce cas la PK pour éviter toute équivoque
Envoyé par Waldar Référence croisée avec le post d'escartefigue car c'est le même sujet : https://www.developpez.net/forums/bl...cente-critere/ Ah oui zut Merci pour la réf.
Référence croisée avec le post d'escartefigue car c'est le même sujet : https://www.developpez.net/forums/bl...cente-critere/
Envoyé par ASSOGBA Jean Svp monsieur je veux savoir si il s'agit du code de langage Java Ce n'est pas du Java, mais du SQL.
Bonsoir à vous Svp monsieur je veux savoir si il s'agit du code de langage Java
Envoyé par CinePhil Pourquoi faire SELECT ALL COUNT(*) alors que SELECT COUNT(*) est suffisant ? ALL est le modificateur par défaut, et j'ai l'habitude de spécifier les valeurs par défaut même si, comme ici, ça ne change rien au résultat
Pourquoi faire SELECT ALL COUNT(*) alors que SELECT COUNT(*) est suffisant ?
Je ne crois pas que mysql_config_editor existe sur MariaDB, du moins l'option --login-path n'est pas documentée. Et à moins de décoder ~/.myconf.cnf, je ne pense pas qu'on puisse l'utiliser avec PHP/PDO & cie. Avec PHP/PDO, le plus approchant est la définition du DSN dans un fichier : /path/to/dsn : Code : Sélectionner tout - Visualiser dans une fenêtre à part mysql:host=localhost;dbname=my_db;user=my_username;password=MyPa55w0rd;charset=utf8mb4 script.php : Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part $pdo = new PDO('uri:file:///path/to/dsn');
mysql:host=localhost;dbname=my_db;user=my_username;password=MyPa55w0rd;charset=utf8mb4
$pdo = new PDO('uri:file:///path/to/dsn');
Pas mal cet outil ! Est-ce seulement pour Oracle MySQL ou aussi pour MariaDB ? Est-ce que ça pourrait être utilisé pour initialiser une connexion en PHP via PDO (ou pour un autre langage de programmation) ? Ça permettrait d'éviter d'avoir à stocker le mot de passe de connexion dans un fichier de config de l'application utilisatrice.
Ça ne gène pas autant MySQL que moi d'utiliser FIRST_VALUE() pour calculer un last https://dev.mysql.com/doc/refman/8.0...d-windows.html this query defines a window that includes partitioning, and uses ORDER BY in the OVER clauses to modify the window in different ways: Code : Sélectionner tout - Visualiser dans une fenêtre à part 123456SELECT DISTINCT year, country, FIRST_VALUE(year) OVER (w ORDER BY year ASC) AS first, FIRST_VALUE(year) OVER (w ORDER BY year DESC) AS last FROM sales WINDOW w AS (PARTITION BY country); Faudrait que je prenne le temps de mesurer les perfs un jour.
SELECT DISTINCT year, country, FIRST_VALUE(year) OVER (w ORDER BY year ASC) AS first, FIRST_VALUE(year) OVER (w ORDER BY year DESC) AS last FROM sales WINDOW w AS (PARTITION BY country);
Envoyé par sevyc64 j'ai eu le cas avec SQL Server qui me retournait les blocs dans l'ordre inverse des unions (ça m'avait semblait systématique). De ce fait, la ligne qui doit servir de ligne d’entête de colonnes, issue de la première requête se retrouvait être la dernière ligne du résultat retourné. Je ne connais pas MS SQL Server, mais ne serait-ce pas dû au ORDER BY appliqué sur le résultat du UNION et pas spécifiquement sur la data ? Ceci : Code : Sélectionner tout - Visualiser dans une fenêtre à part 1234SELECT ... UNION SELECT ... ORDER BY ... Equivaut à : Code : Sélectionner tout - Visualiser dans une fenêtre à part 12(SELECT ... UNION SELECT ...) ORDER BY ... D'où l'intérêt de spécifier les sous-requêtes : Code : Sélectionner tout - Visualiser dans une fenêtre à part 123(SELECT ...) UNION (SELECT ... ORDER BY ...) Pour être sûr que le résultat du UNION est trié comme on l'entend on peut ajouter une clef de tri : Code : Sélectionner tout - Visualiser dans une fenêtre à part 1234(SELECT 1 AS sort_key, ...) UNION (SELECT 2 AS sort_key, ...) ORDER BY sort_key ASC, ...
SELECT ... UNION SELECT ... ORDER BY ...
(SELECT ... UNION SELECT ...) ORDER BY ...
(SELECT ...) UNION (SELECT ... ORDER BY ...)
(SELECT 1 AS sort_key, ...) UNION (SELECT 2 AS sort_key, ...) ORDER BY sort_key ASC, ...
Petite précision pour cette astuce, on peut ne pas avoir tout à fait le résultat souhaité. En effet, certains SGBD ne retournent pas les blocs de lignes dans l'ordre des unions, mais dans l'ordre inverse, voire dans un ordre aléatoire. Personnellement, j'ai eu le cas avec SQL Server qui me retournait les blocs dans l'ordre inverse des unions (ça m'avait semblait systématique). De ce fait, la ligne qui doit servir de ligne d’entête de colonnes, issue de la première requête se retrouvait être la dernière ligne du résultat retourné.