首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联合中不同列的计数,并在同一行中显示

联合中不同列的计数,并在同一行中显示
EN

Stack Overflow用户
提问于 2017-06-17 20:11:47
回答 1查看 40关注 0票数 1

我正在尝试使用union从不同的表中获取不同列的count(*)

代码语言:javascript
复制
//tbl_churidar

order_id    order_no_first    order_no
--------------------------------------
    1             C             1000
    2             C             1001
    3             C             1002

//tbl_anarkali

order_id    order_no_first    order_no
--------------------------------------
    1             A             1003
    2             A             1004
    3             A             1005

//tbl_assign

assign_id    order_id    order_no_first
---------------------------------------
   1            1              C
   2            1              A
   3            2              C
   4            3              C
   5            2              A
   6            3              A

//tbl_unit_status

status_id    assign_id    status_status    stitching_worker
-----------------------------------------------------------
    1           1            Stitch             AA
    2           2              QC             {null}
    3           3            Stitch             BB
    4           4            Stitch             BB
    5           5            Stitch             AA
    6           6            Stitch             CC

tbl_unit_status表中,其中status_status = Stitch应该与其他两个表INNER JOIN,并获得churidaranarkali的总计数,每个stitching_worker采取。

所需的输出为:

代码语言:javascript
复制
churidar    anarkali    stitching_worker
----------------------------------------
   1           1             AA
   2           0             BB
   0           1             CC

我试着得到上面的输出,但是被卡住了。下面是我的代码,

代码语言:javascript
复制
SELECT churidar, anarkali, stitching_worker 
   FROM ((
          SELECT count(*) AS churidar, NULL AS anarkali, 
             us.stitching_worker 
          FROM tbl_unit_status us 
          INNER JOIN tbl_assign a ON a.assign_id = us.assign_id 
          INNER JOIN tbl_churidar o ON 
                (o.order_id = a.order_id AND 
                    o.order_no_first = a.order_no_first) 
          INNER JOIN tbl_contacts c ON c.contacts_id = o.contacts_id 
          LEFT JOIN tbl_title t ON t.title_id = c.title_id 
          WHERE us.status_status = "Stitch" AND 
                   o.order_no_first = "C" 
          GROUP BY us.stitching_worker
         ) 
        UNION (
           SELECT NULL AS churidar, count(*) AS anarkali,
                     us.stitching_worker 
           FROM tbl_unit_status us 
           INNER JOIN tbl_assign a ON a.assign_id = us.assign_id 
           INNER JOIN tbl_anarkali o ON (
                       o.order_id = a.order_id AND 
                         o.order_no_first = a.order_no_first) 
           INNER JOIN tbl_contacts c ON c.contacts_id = o.contacts_id  
           LEFT JOIN tbl_title t ON t.title_id = c.title_id 
           WHERE us.status_status = "Stitch" AND 
              o.order_no_first = "A" 
           GROUP BY us.stitching_worker
          )
         ) AS T1

上面代码的输出是,

代码语言:javascript
复制
churidar    anarkali    stitching_worker
----------------------------------------
   1           0             AA
 {null}        1             AA
   2           0             BB
   0           1             CC

如何获得所需的输出。我已经尝试了很多。帮我找到答案。谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-17 20:20:17

如果我理解正确(可能不是这样),您不需要前两个表。您可以从tbl_assign获取所需的信息,只需使用聚合:

代码语言:javascript
复制
select us.stitching_working,
       sum(a.order_no_first = 'C') as churidar,
       sum(a.order_no_first = 'A') as anarkali
from tbl_unit_status us join
     tbl_assign a
     on us.assign_id = a.assign_id 
where us.status_status = 'Stitch'
group by us.stitching_working;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44604505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档