对于我的查询,我想使用MySQL-DB中的2个表:tbl_A和tbl_B。 首先,我想通过两个表上的两个选择查询的合并来定义主列(col_P)的相关子集。然后应该有几个子查询来计算这个相关子集的一些结果(res_A,res_B,...)。
一开始我只为第一张表做了这个:
SELECT col_P, res_A, res_B FROM tbl_A
# Sub-Query 1
left join(
select col_P, sum(...) res_A from tbl_A
where ...(some conditions)
group by col_P) as tbl_1
using(col_P)
# Sub-Query 2
left join(
select col_P, sum(...) res_B from tbl_A
where ...(some conditions)
group by col_P) as tbl2
using(col_P)
# Filter for relevant col_P
WHERE col_P >... and col_P < ... and more conditions here
GROUP BY col_P
ORDER BY col_P ASC
此查询工作正常。
现在,我需要合并第二个表tbl_B,它也有col_P,其中有许多相同的条目,但也有一些条目不在tbl_A中,但与最终结果表有关(一个结果列为col_P-subquery)在tbl_B上为res_C)。 因此,我想合并两个表中的相关col_P。独自站立,我能够做到:
SELECT col_P from tbl_A
WHERE ... some conditions
GROUP by col_P
UNION
SELECT col_P from tbl_B
GROUP by col_P
HAVING SUM(...)!=0 and more conditions
如何将相关的col_P子集合并到我的第一个查询中?我最后用UNION尝试了它,但得到了关于UNIONed SELECT语句中不同列的错误......
总结一下:我希望有一个大型查询,我将相关的col_P定义为两个表上两个查询的组合结果。然后,对于结果,我想在表a或b上创建几个子查询,这给我每个结果列。
结果表应该如下所示:
col_P res_A res_B res_C
query on tbl: a & b a a b
... .. .. ..
任何帮助都将受到高度赞赏......