Problème de prise de conditions SQL
Résolu
julien37
-
julien37 -
julien37 -
Bonjour à tous,
J'ai besoin de vos talents suite à un problème lié à une soustraction sur SQL qui ne prend pas en compte les conditions recquises. En effet la requete SQL est la suivante :
select IIII,CCCCCC,(select sum(Mappele) from Table_sql where Sens='D' and CCCCCC>=1000 and CCCCCC<=1999)-(select sum(Mappele) from ecrituresyndic e where Sens='C' and CCCCCC>=1000 and CCCCCC<=1999)
from Table_sql
where CCCCCC>=1000 and CCCCCC<=1999
GROUP BY IIII,CCCCCC;
Cette requête me donne le même résultat pour chaque IIII,CCCCCC, qui est la totalité de la totalité des D - la totalité des C.
J'aimerais que la soustraction soit également groupé par IIII et par CCCCCC sachant que si je met group by IIII,CCCCCC dans les parenthèse, ça me met "Subquery returns more than 1 row".
J'espère que j'ai été explicite???
Merci d'avance à tous car là je bloque....
J'ai besoin de vos talents suite à un problème lié à une soustraction sur SQL qui ne prend pas en compte les conditions recquises. En effet la requete SQL est la suivante :
select IIII,CCCCCC,(select sum(Mappele) from Table_sql where Sens='D' and CCCCCC>=1000 and CCCCCC<=1999)-(select sum(Mappele) from ecrituresyndic e where Sens='C' and CCCCCC>=1000 and CCCCCC<=1999)
from Table_sql
where CCCCCC>=1000 and CCCCCC<=1999
GROUP BY IIII,CCCCCC;
Cette requête me donne le même résultat pour chaque IIII,CCCCCC, qui est la totalité de la totalité des D - la totalité des C.
J'aimerais que la soustraction soit également groupé par IIII et par CCCCCC sachant que si je met group by IIII,CCCCCC dans les parenthèse, ça me met "Subquery returns more than 1 row".
J'espère que j'ai été explicite???
Merci d'avance à tous car là je bloque....
A voir également:
- Problème de prise de conditions SQL
- Prise chromecast - Guide
- Problème prise jack manette ps5 - Forum Casque et écouteurs
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. - Forum Réseaux sociaux
- Manette ps5 cassée - Forum Jeux vidéo
- Prise rj45 fibre ✓ - Forum Fibre Optique
2 réponses
Bonjour,
Essaie un truc comme ca :
(j'ai décomposé en 3 champs pour la clarté)
Si tu n'es pas sous Mysql, il te faudra peut-etre adapter la syntaxe du IF ...
select IIII,CCCCCC,
SUM(IF(Table_sql.Send = 'D', Table_sql.Mappele, 0)) AS SumD
SUM(IF(ecrituresyndic.Send = 'C', ecrituresyndic.Mappele, 0)) AS SumC,
SumD - SumC AS TonResultat
FROM Table_sql
INNER JOIN ecrituresyndic ON (Table_sql.IIII = ecrituresyndic.IIII AND Table_sql.CCCCCC = ecrituresyndic.CCCCCC)
where Table_sql.CCCCCC>=1000 and Table_sql.CCCCCC<=1999
GROUP BY Table_sql.IIII,Table_sql.CCCCCC;
Je ne garantis pas le résultat direct (j'ai pas testé !) mais l'idée est là ...
Bon courage
Essaie un truc comme ca :
(j'ai décomposé en 3 champs pour la clarté)
Si tu n'es pas sous Mysql, il te faudra peut-etre adapter la syntaxe du IF ...
select IIII,CCCCCC,
SUM(IF(Table_sql.Send = 'D', Table_sql.Mappele, 0)) AS SumD
SUM(IF(ecrituresyndic.Send = 'C', ecrituresyndic.Mappele, 0)) AS SumC,
SumD - SumC AS TonResultat
FROM Table_sql
INNER JOIN ecrituresyndic ON (Table_sql.IIII = ecrituresyndic.IIII AND Table_sql.CCCCCC = ecrituresyndic.CCCCCC)
where Table_sql.CCCCCC>=1000 and Table_sql.CCCCCC<=1999
GROUP BY Table_sql.IIII,Table_sql.CCCCCC;
Je ne garantis pas le résultat direct (j'ai pas testé !) mais l'idée est là ...
Bon courage