Requete MySQL renvoi plusieurs entrées

Résolu
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   -  
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   -
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 ?

6 réponses

Utilisateur anonyme
 
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
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   72
 
je peux faire un

select distinct IdCard, * FROM ou je dois détailler tout les autres champs après ?
0
Utilisateur anonyme
 
mettre le nom des champs à la place de * séparés par des virgules
0
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   72
 
c'est bien ce qui me semblait .. merci beaucoup..
0
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   72
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
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
kalimbra Messages postés 469 Date d'inscription   Statut Membre Dernière intervention   72
 
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