在较大的SQL查询中合并一列

时间:2016-05-26 06:09:17

标签: mysql sql

对于我的查询,我想使用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
                 ...       ..       ..       ..

任何帮助都将受到高度赞赏......

0 个答案:

没有答案