Requete MySQL renvoi plusieurs entrées

Résolu
Bonjour,

j'ai une requete MySQL qui est sensé me renvoyer une entrée unique correspondant à mes besoins. :

SELECT DISTINCT * FROM Presence LEFT JOIN Employes ON Presence.IdCard = Employes.idCard WHERE DepartTime ='00:00:00' AND ArrivalTime <> '00:00:00'

Malheureusement , dans un cas, je me retrouve avec deux entrées . Normalement Chaque DepartTime est compensé par un arrivalTime, sinon je récupère.

Mais si j'ai deux entrées idcard identique avec deux arrivaltime différent, et sans aucun departime, je me retrouve avec deux entrées dans ma requete..

comment pourrais je modifier cette requete pour qu'il ne me donne qu'une entrée quand plusieurs remplissent la condition ?
Configuration: Windows XP
Firefox 3.0.1

6 réponses

  1. Bonsoir,

    il faut détailler le select

    select distinct idcard, les autres zones from .....
    on ne retourbera alors qu'un enreg par idcard identique
    0
    1. je peux faire un

      select distinct IdCard, * FROM ou je dois détailler tout les autres champs après ?
      0
      1. mettre le nom des champs à la place de * séparés par des virgules
        0
    2. c'est bien ce qui me semblait .. merci beaucoup..
      0
      1. bon, en fin de compte ça ne fonctionne pas...

        voila ma requete : SELECT DISTINCT Presence.IdCard, Presence.ArrivalTime, Presence.DepartTime, Employes.EmployeName, Employes.Company,Employes.Localisation
        FROM Presence LEFT JOIN Employes ON Presence.IdCard = Employes.idCard
        WHERE DepartTime ='00:00:00' AND ArrivalTime <> '00:00:00'

        et pourtant dans mon résultat je me retrouve bien avec 2 entrées répondant aux conditions WHERE, mais avec 2 IdCard identique...
        0
        1. effectivement car il prend le distinct sur toutes les variables et comme arrivaltime est différent il affiche tout

          SELECT DISTINCT Presence.IdCard, Employes.EmployeName, Employes.Company,Employes.Localisation
          FROM Presence LEFT JOIN Employes ON Presence.IdCard = Employes.idCard
          WHERE DepartTime ='00:00:00' AND ArrivalTime <> '00:00:00'
          0
          1. bon au final je pense avoir résolu mon problème avec un group by..

            SELECT * FROM Presence LEFT JOIN Employes ON Presence.IdCard = Employes.idCard WHERE DepartTime ='00:00:00' AND ArrivalTime <> '00:00:00' GROUP BY Employes.EmployeName ORDER BY Localisation ASC, Company ASC, EmployeName ASC;

            merci de votre aide
            0