patricevernier
Messages postés6Date d'inscriptionlundi 16 novembre 2009StatutMembreDernière intervention29 octobre 2010
-
16 nov. 2009 à 11:20
patricevernier
Messages postés6Date d'inscriptionlundi 16 novembre 2009StatutMembreDernière intervention29 octobre 2010
-
18 nov. 2009 à 16:55
Bonjour je suis nul en informatique et on me demande de faire des requêtes SQL à partir de tableau présent sur un programme de gestion d'affaire.
En simple j'ai plusieurs tableaux
-affaire A avec (A.num_affaire, A.lib_affaire, A.login,...)
-lots L avec (L.num_affaire, L.num_lot (il ya souvent plusieurs lots par affaire), L.lib_lot, L.montant_commande (montant de la commande de chaque lot), ...
-Facture
-Postes
-...
Ce que l'on me demande, c'est de faire une requête pour obtenir dans um tableau les affaires par chargé d'affaire (login) avec la somme des montants de commande de chaque lot pour avoir le montant de l'affaire, le nombre de lot (ex:5 lots ou plus).
Voilà ce que j'ai fait pour la somme
SELECT DISTINCT A.num_affaire, A.lib_affaire,A.num_batiment,A.num_local, A.type_affaire, A.date_enreg,A.login, SUM(L.montant_commande) AS Montant FROM affaires A
LEFT OUTER JOIN charges_affaire_autorises CAA ON A.login=caa.login
LEFT OUTER JOIN lots L ON A.num_affaire=L.num_affaire
LEFT OUTER JOIN fournisseurs F ON F.fourniss_id = L.fourniss_id
LEFT OUTER JOIN utilisateurs U1 ON A.login = U1.login
LEFT OUTER JOIN utilisateurs U2 ON L.login = U2.login
LEFT OUTER JOIN utilisateurs U3 ON U3.login = 'VERNIER'
LEFT OUTER JOIN postes P ON P.num_lot = L.num_lot
LEFT OUTER JOIN factures FA ON FA.num_lot = L.num_lot
WHERE ((U3.NIVEAU_ACCES<>'EXTE') AND A.date_enreg >= '1/1/2009' AND A.date_enreg <= '01/01/2010' AND U2.Nom + ' ' + U2.Prenom IN ('BALLON Yves', 'BENOIT Cyril', 'CABANEL Eric', 'COLLEMARE stephane', 'CONRY Cécile', 'ENTZMANN Vincent') AND A.NUM_AFFAIRE=L.NUM_AFFAIRE)
OR ((U3.NIVEAU_ACCES='EXTE') AND ((A.LOGIN= 'VERNIER') OR ( 'VERNIER' IN (SELECT C.LOGIN FROM CHARGES_AFFAIRE_AUTORISES C INNER JOIN LOTS L ON L.NUM_AFFAIRE = C.NUM_AFFAIRE AND L.LOGIN = C.LOGIN WHERE C.NUM_AFFAIRE=A.NUM_AFFAIRE))) AND U2.Nom + ' ' + U2.Prenom IN ('BALLON Yves', 'BENOIT Cyril', 'CABANEL Eric', 'COLLEMARE stephane', 'CONRY Cécile', 'ENTZMANN Vincent') AND A.NUM_AFFAIRE=L.NUM_AFFAIRE) GROUP BY A.num_affaire
ORDER BY A.Login, A.num_affaire, A.lib_affaire, A.num_batiment, A.num_local, A.type_affaire, A.date_enreg,
SUM(L.montant_commande) AS Montant ASC
Cette requête sans la somme marche en me donnant plusieurs lignes de montant par affaire. Mais là ça ne marche pas .
patricevernier
Messages postés6Date d'inscriptionlundi 16 novembre 2009StatutMembreDernière intervention29 octobre 2010 18 nov. 2009 à 16:55
ah j'ai un autre souci les résultats des sommes sont fausses. La condition where A.num_affaire=L.num_affaire marche pour une autre requête que j'ai fait mais où je n'ai pas de conditions de noms. Dès que j'ajoute les noms les résultats deviennent faux. Pourquoi?