Requête sql
brouki
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
seminoque Messages postés 12 Statut Membre -
seminoque Messages postés 12 Statut Membre -
Bonjour,
j'ai la table suivant
financement( numéro_projet(cp) , nom_organisme (cp) , monatant )
cette table à deux clés primaires : numéro_projet et nom_organisme .
je veux calculé l'apport de l'organisme 'xxx' au projet dont le numéro est 111 par exemple
numéro_projet nom_organisme monatant
111 XXX 10
111 YYY 50
111 ZZZ 40
222 AAA 30
222 XXX 20
333 ZZZ 10
l'apport de xxx au projet 111 est 10% ( 10/10+50+40)
je voudrai savoir si cette requête marche
select monatant / count(montant) into approt from financement
where (numéro_projet=111) and (nom_organisme = 'xxx' ) ;
merci d'avance.
j'ai la table suivant
financement( numéro_projet(cp) , nom_organisme (cp) , monatant )
cette table à deux clés primaires : numéro_projet et nom_organisme .
je veux calculé l'apport de l'organisme 'xxx' au projet dont le numéro est 111 par exemple
numéro_projet nom_organisme monatant
111 XXX 10
111 YYY 50
111 ZZZ 40
222 AAA 30
222 XXX 20
333 ZZZ 10
l'apport de xxx au projet 111 est 10% ( 10/10+50+40)
je voudrai savoir si cette requête marche
select monatant / count(montant) into approt from financement
where (numéro_projet=111) and (nom_organisme = 'xxx' ) ;
merci d'avance.
A voir également:
- Requête sql
- Logiciel sql - Télécharger - Bases de données
- Jointure sql ✓ - Forum MySQL
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros ✓ - Forum DS
- Sql (+) - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
3 réponses
Pourquoi 10/10+50+40 ? Si numero_projet et nom_organisme sont des clés primaires, tu ne dois avoir qu'une seule ligne par projet et par organisme, donc un seul résultat possible pour le montant concernant XXX et le projet 111.
le projet 111 nécessite 100 ( 10+50+40), je veux calculé la contribution de l'organisme xxx à ce projet,
pour ta réponse : oui c'est ça!! j'ai pas doublons 111 xxx !!!
merci
pour ta réponse : oui c'est ça!! j'ai pas doublons 111 xxx !!!
merci
Il me semble qu'il faut utiliser la fonction SUM et non COUNT.
Je pense que ta requête ne donne pas le résultat attendu car elle ne sélectionne que la ligne 111 XXX au lieu des trois lignes 111 XXX, 111 YYY et 111 ZZZ.
Pour résoudre le problème, je ferais deux requêtes, une première pour sélectionner la part de chaque organisme au projet 111 et une deuxième pour ne sélectionner que la contribution de XXX. En imbriquant ces deux requêtes, on obtient :
select colonne1, colonne2
from
(
select monatant/sum(monatant) as colonne1, nom_organisme as colonne2
from financement
where numéro_projet=111
group by nom_organisme
)
where colonne2='XXX'
Je pense que ta requête ne donne pas le résultat attendu car elle ne sélectionne que la ligne 111 XXX au lieu des trois lignes 111 XXX, 111 YYY et 111 ZZZ.
Pour résoudre le problème, je ferais deux requêtes, une première pour sélectionner la part de chaque organisme au projet 111 et une deuxième pour ne sélectionner que la contribution de XXX. En imbriquant ces deux requêtes, on obtient :
select colonne1, colonne2
from
(
select monatant/sum(monatant) as colonne1, nom_organisme as colonne2
from financement
where numéro_projet=111
group by nom_organisme
)
where colonne2='XXX'