Petit problème de requete [Access] - SQL/NoSQL - Programmation
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.
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...
Marsh Posté le 05-11-2007 à 13:18:31
ReplyMarsh 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;
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