栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用SUM对来自多个表的数据进行计数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用SUM对来自多个表的数据进行计数

除了加入之外,

tbl_workers
您还可以加入其不变的变体,其中
position
position2
将在同一列中但在不同行中。

这是不变的样子:

SELECt  w.id,  w.name,  CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,  w.statusFROM tbl_workers AS w  CROSS JOIN (SELECt 1 AS pos UNIOn ALL SELECT 2) AS x

这是整个查询,基本上是您的原始查询,上面的查询代替了该

tbl_workers
表:

SELECT p.id,   p.position,   SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,  SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placedFROM tbl_positions AS p  LEFT JOIN (    SELECt      w.id,      w.name,      CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,      w.status    FROM tbl_workers AS w      CROSS JOIN (SELECt 1 AS pos UNIOn ALL SELECT 2) AS x  ) AS w   ON w.position=p.idGROUP BY p.id, p.position

更新

这是根据注释中其他请求修改的脚本:

SELECT p.id,   p.position,   SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,  SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placedFROM tbl_positions AS p  LEFT JOIN (    SELECt      w.id,      w.name,      CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,      CASE w.status        WHEN 4 THEN CASE x.pos WHEN 1 THEN 3 ELSE 2 END        ELSE w.status      END AS status    FROM tbl_workers AS w      CROSS JOIN (SELECT 1 AS pos UNIOn ALL SELECT 2) AS x  ) AS w   ON w.position=p.idGROUP BY p.id, p.position

这个想法是

4
3
2
取决于子选择中的状态,这取决于我们当前是要拉
position
还是
position2
作为统一
position
。外部选择继续使用与以前相同的逻辑。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号