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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Enlever les doublons d'une requête


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Enlever les doublons d'une requête
    Bonjour à tous
    J'ai un problème avec une requête SQL. Je ne veux plus avoir de doublons dans une requête sur ma table alarmes. Le problème c'est qu'une même alarme peut arriver mais à une heure et date différente alors je ne peux utiliser le mot clé DISTINCT.

    Voici mes champs
    Date
    Heure
    Conteneur
    PartieConteneur
    Température

    Alors pour un conteneur donnée il peut y avoir plusieurs partie en alarme de température

    Dison que j'ai 2 fois Conteneur 6 et PartieConteneur 8 en alarme je veux que ma requête sorte seulement la plus récente tout en sortant toutes les autres alarmes mais jamais en double

    J'espère avoir été clair
    Merci!

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Yoseik Voir le message
    J'espère avoir été clair
    bah en fait, non

    peux-tu donner un exemple ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Voici un exemple

    Date | Heure | Conteneur | PartieConteneur
    2008-09-03 | 07:30:32 | 1 | 5
    2008-09-04 | 04:30:55 | 1 | 5
    2008-09-02 | 08:30:32 | 4 | 6
    2008-09-04 | 10:30:32 | 6 | 7
    2008-09-04 | 12:30:32 | 6 | 7
    2008-09-03 | 07:30:32 | 8 | 3
    2008-09-03 | 07:30:32 | 8 | 6

    Je veux que ma requête élimine la 2ième ligne et la 4ieme de cette exemple
    2008-09-03 | 07:30:32 | 1 | 5
    2008-09-02 | 08:30:32 | 4 | 6
    2008-09-04 | 10:30:32 | 6 | 7
    2008-09-03 | 07:30:32 | 8 | 3
    2008-09-03 | 07:30:32 | 8 | 6

    Qu'un conteneur n'aille seulement qu'une partie identique en défaut à la fois. Si la même partie est en défaut plusieurs fois alors on affiche seulement la plus récente

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Dit comme ça, c'est beaucoup plus clair !

    ça serait plus simple avec une seule colonne DATETIME plutôt qu'une DATE et un TIME, mais bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX(ADDTIME(`Date`, Heure)), Conteneur, PartieConteneur
    FROM ta_table
    GROUP BY Conteneur, PartieConteneur
    ou si tu veux re-séparer la date et l'heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DATE(MAX(ADDTIME(`Date`, Heure))) AS `Date`, 
      TIME(MAX(ADDTIME(`Date`, Heure))) AS Heure, 
      Conteneur, 
      PartieConteneur
    FROM ta_table
    GROUP BY Conteneur, PartieConteneur

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse mais ça ne fonctionne toujours pas, en passant je fais ma requête en VB avec crystal report

    Voici ma requête suite à ta réponse


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'rptReport.SQLQueryString = "SELECT MAX(ADDTIME(`Date`, `Heure`)) AS `Date` ,
      TIME(MAX(ADDTIME(`Date`, Heure))) AS `Heure`, 
      `Température`, 
      `Conteneur`, 
      `PartieConteneur`, 
      `Limite température` 
    FROM `Alarmes` 
    WHERE `Conteneur` between 34 and 66 
      AND ISNULL(`Date fin`) 
    ORDER BY `Conteneur`, `PartieConteneur` 
    GROUP BY `Conteneur`, `PartieConteneur`"
    J'ai encore mes doublons malheureusement

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Oui, je l'ai fais d'après ton exemple où il n'y avait pas les températures. C'est un peu plus compliqué si tu veux récupérer des info non-agrégées.

    Je te fais ça ce soir.

    au passage, merci de et d'indenter ton code.

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    ça donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT `Date` ,
      `Heure`, 
      `Température`, 
      `Conteneur`, 
      `PartieConteneur`, 
      `Limite température` 
    FROM `Alarmes` AS A1
    WHERE `Conteneur` between 34 and 66 
      AND `Date fin` IS NULL
      AND ADDTIME(`Date`, `Heure`) = 
        (SELECT MAX(ADDTIME(`Date`, `Heure`))
         FROM Alarmes AS A2
         WHERE A2.Conteneur = A1.Conteneur 
           AND A2.PartieConteneur = A1.PartieConteneur
           AND `Date fin` IS NULL
        )
    ORDER BY `Conteneur`, `PartieConteneur`

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Sans connaître le SGBD, c'est balaise !!!

    Bonne nuit

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonsoir,

    Sans connaître le SGBD, c'est balaise !!!

    Bonne nuit
    C'est manifestement du MySQL

  10. #10
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Salut Antoun,

    Oui je sais mais si on doit deviner sans cesse les questions et réponses, moi je disjoncte... Surtout à cette heure

    Clair et précis, pas de requête, de description de table

    J'y vais, mais dans le doute !

    Bonne nuit

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Je crains que le gros monstre tentaculaire n'aie raison !
    Yoseik, un peu de lecture s'impose à toi : http://www.developpez.net/forums/a69...gage-sql-lire/

  12. #12
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    @Antoun, je suis pas un monstre mais toute pitite bestiole gentille !!!

    Dis moi si dans ça requête il rajoute la Clause HAVING

  13. #13
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    @Antoun, je suis pas un monstre mais toute pitite bestiole gentille !!!
    une bestiole qui fhtagn!

    Citation Envoyé par Chtulus Voir le message
    Dis moi si dans ça requête il rajoute la Clause HAVING
    Ma boule de cristal me dit que s'il écrit < `1`, il va se prendre une belle mysql_error.

    Quant à ma requête, elle n'a pas besoin de HAVING.

Discussions similaires

  1. Eviter les doublons dans une requête.
    Par Smint dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/03/2017, 16h17
  2. [AC-2003] Numéroter les doublons dans une requête en utilisant une fonction VBA
    Par maldan dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/09/2009, 16h46
  3. Réponses: 1
    Dernier message: 23/09/2009, 15h38
  4. Enlever les doublons d'une somme
    Par _Cedrix_ dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/06/2008, 12h02
  5. Enlever les doublons dans une liste
    Par gefrey54 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 14/09/2007, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo