IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Commentaires

  1. Avatar de TotoMonkey
    • |
    • permalink
    Autre méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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
  2. Avatar de escartefigue
    • |
    • permalink
    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
  3. Avatar de Séb.
    • |
    • permalink
    Citation 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.
  4. Avatar de Waldar
    • |
    • permalink
    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/
  5. Avatar de Séb.
    • |
    • permalink
    Citation 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.
  6. Avatar de ASSOGBA Jean
    • |
    • permalink
    Bonsoir à vous
    Svp monsieur je veux savoir si il s'agit du code de langage Java
  7. Avatar de Séb.
    • |
    • permalink
    Citation 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
  8. Avatar de CinePhil
    • |
    • permalink
    Pourquoi faire SELECT ALL COUNT(*) alors que SELECT COUNT(*) est suffisant ?
  9. Avatar de Séb.
    • |
    • permalink
    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');
    Mis à jour 29/03/2023 à 22h02 par Séb.
  10. Avatar de CinePhil
    • |
    • permalink
    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.
  11. Avatar de Séb.
    • |
    • permalink
    Ç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
    1
    2
    3
    4
    5
    6
    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);
    Faudrait que je prenne le temps de mesurer les perfs un jour.
  12. Avatar de Séb.
    • |
    • permalink
    Citation 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
    1
    2
    3
    4
    SELECT ...
    UNION
    SELECT ...
    ORDER BY ...
    Equivaut à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (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
    1
    2
    3
    (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
    1
    2
    3
    4
    (SELECT 1 AS sort_key, ...)
    UNION
    (SELECT 2 AS sort_key, ...)
    ORDER BY sort_key ASC, ...
  13. Avatar de sevyc64
    • |
    • permalink
    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é.