Requete MySQL renvoi plusieurs entrées

Résolu/Fermé
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 15 sept. 2008 à 17:09
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 22 sept. 2008 à 07:41
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
15 sept. 2008 à 18:34
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 samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
16 sept. 2008 à 10:12
je peux faire un

select distinct IdCard, * FROM ou je dois détailler tout les autres champs après ?
0
Utilisateur anonyme
16 sept. 2008 à 17:45
mettre le nom des champs à la place de * séparés par des virgules
0
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
17 sept. 2008 à 08:30
c'est bien ce qui me semblait .. merci beaucoup..
0
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
18 sept. 2008 à 10:51
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
18 sept. 2008 à 18:00
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 samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
22 sept. 2008 à 07:41
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