[Access] Petit problème de requete

Petit problème de requete [Access] - SQL/NoSQL - Programmation

Marsh Posté le 02-11-2007 à 20:52:45    

Bonjour à tous, j'ai un petit probleme concernant les valeurs de deux requetes que j'aimerais comparer :
 
SELECT employe.nom, employe.prenom, sum(D1.nbheures)
FROM employes, realisations, durees AS D1
WHERE employes.employeID=realisations.employeID And D1.dureeID=realisations.duree
GROUP BY employes.nom, employes.prenom;
 
et
 
SELECT employe.nom, employe.prenom, sum(D2.nbheures)
FROM employes, durees AS D2, previsions
WHERE employes.employeID=previsions.employeID And D2.dureeID=previsions.duree
GROUP BY employes.nom, employes.prenom;
 
En gros la premiere m'affiche le nombre d'heures réalisées par employé, la seconde le nombre d'heures prévues. Les tables previsions et realisations ont les meme champs et sont reliées toutes les deux à durees et employés.
 
Je souhaiterais tout mettre dans une seule requete pour afficher les employés qui ont réalisé moins d'heures que prévu...
 
Et je n'arrive pas à faire qu'une seule requête pour m'afficher ce que je veux...
 
Si quelqu'un a une idée je le remercie d'avance !
 
EDIT : J'ai éditer car mes noms de table ne correspondaient pas (erreur dans le copier coller).


Message édité par jackdaniels26 le 04-11-2007 à 21:31:13
Reply

Marsh Posté le 02-11-2007 à 20:52:45   

Reply

Marsh Posté le 04-11-2007 à 16:47:42    

Personne pour m'aider ?

Reply

Marsh Posté le 04-11-2007 à 21:05:05    

il y a moyen d'y arriver, mais quand je vois tes deux requêtes, je suis presque persuader qu'elle ne t'affiche déjà pas le bon résultat pour la bonne et simple raison que tu ne fait aucune jointes avec la tables EMPLOYES. Donc ta requête va effectuer un produit cartésien.  
 
Donc, déjà pourrais tu me donner la structure de toutes tes tables dans ces requêtes. Ensuite, je te fournirais la requête qui te permettra de mettre en une requête ces deux requêtes qui j'espère seront corrigée avec une jointe de la tables EMPLOYES.

Reply

Marsh Posté le 04-11-2007 à 21:15:42    

Désolé, je viens de m'apercevoir que j'avais fait une erreur de manip dans mon copier coller ! J'ai changé ce qui n'allait pas.
 
Merci !
 
Re-edit : quand tu me dis la structure de mes tables, tu veux dire quoi ? désolé je rame vraiment...


Message édité par jackdaniels26 le 04-11-2007 à 21:18:10
Reply

Marsh Posté le 05-11-2007 à 13:18:31    

Svp désolé je suis lourd, mais je galère vraiment.

Reply

Marsh Posté le 05-11-2007 à 21:03:49    

jackdaniels26 a écrit :

Svp désolé je suis lourd, mais je galère vraiment.


 
la query va dépendre vraiment d'access. Access est un petit moteur pourri qui n'aime vraiment pas les requête tordues. cette requête devrait fonctionner normalement, mais teste la quand même, on pourrait avoir un problème de lenteur avec ACCESS qui digère mal ce genre de requête.
Si ça ne marche pas, copie moi la structure exacte de tes tables (par structure, j'entends la liste des colonnes des tables concernée par la requête).
 
SELECT emp1.nom, emp1.prenom, sum(D1.nbheures),
           (SELECT sum(D2.nbheures)  
            FROM durees AS D2, previsions  
            WHERE emp1.employeID=previsions.employeID  
            AND D2.dureeID=previsions.duree) as resultat
FROM employes as emp1, realisations, durees AS D1  
WHERE emp1.employeID=realisations.employeID  
AND D1.dureeID=realisations.duree  
GROUP BY emp1.nom, emp1.prenom;
 
mais je suis pas sure que ça va marcher à cause du group BY :(
essayons autrement
 
SELECT emp.nom, emp.prenom,
            (SELECT sum(durees.nbheures)  
            FROM durees, previsions  
            WHERE emp.employeID=previsions.employeID  
            AND durees.dureeID=previsions.duree) as resultat1,
            (SELECT sum(durees.nbheures)  
            FROM durees, realisations
            WHERE emp.employeID=realisations.employeID  
            AND durees.dureeID=realisations.duree) as resultat2,
FROM employes as emp;


Message édité par moi23372 le 05-11-2007 à 21:08:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed