Joindre les résultats de deux déclarations sélectionnées
-
06-07-2019 - |
Question
J'ai une table servant de journal des transactions:
Date Action Qty
11-23 ADD 1
11-23 REMOVE 2
11-23 ADD 3
Je souhaite qu'une requête regroupe tous les ADD et tous les REMOVE séparément pour une date donnée.
Chacune de ces instructions select fonctionne correctement, mais elles ne peuvent pas être jointes:
select date, sum(qty) as Added from table where action='Add' and date='11-23'
natural join
select date, sum(qty) as Removed from table where action='Remove' and date='11-23'
Puis-je stocker les résultats de chaque instruction select dans une table, puis les joindre? Y a-t-il un moyen d'éviter tout cela ensemble?
Merci- Jonathan
La solution
Examinez la syntaxe UNION si vous voulez vraiment ajouter les résultats de plusieurs requêtes en une seule:
http://dev.mysql.com/doc/refman /5.0/en/union.html
Toutefois, dans ce cas, consultez GROUP BY
Vous pouvez grouper le Date, action
, ce qui donne un enregistrement par jour et par action, SUM ()
pouvant vous donner la quantité.
Par exemple:
select
date,
action,
sum(qty) AS Quantity
from
table
group by
date, action
entraînera:
11-23 | ADD | 10
11-23 | REMOVE | 5
11-24 | ADD | 4
11-24 | REMOVE | 3
Autres conseils
Cela vous aiderait si vous montriez quelle sortie vous voulez réellement. De votre " as Added " et " Supprimé " Je suppose que vous ne voulez pas un syndicat, mais peut-être quelque chose comme ça:
select
date,
sum(if(action='ADD',qty,0)) as Added,
sum(if(action='REMOVE',qty,0)) as Removed
from `table`
where date='11-23';
(avec un groupe par date
si vous sélectionnez plusieurs dates.)