我有两个表inventory
和tickets
,我想获取存储在库存中的机器详细信息,其中包含3张以上报告的票证。这两个表之间的公共行是machine_name
。
inventory tickets
machine_name|location|macaddress tkt_no|machine_name|problem
--------------------------------------- ----------------------------
fad.dfsd.dg|lab1 |aa:bb:cc:dd:ee:ff 01 |fgr.sds.ss |Network
fgr.sds.ss |lab3 |bb:cc:dd:ee:ff:aa 02 |fgr.sds.ss |HDD
ggr.sds.se |lab1 |11:cc:dd:ee:ff:aa 03 |fad.dfsd.dg |HDD
04 |fad.dfsd.dg |Monitor
05 |fad.dfsd.dg |Other
06 |fad.dfsd.dg |Power
07 |ggr.sds.se |Monitor
08 |fgr.sds.ss |Power
09 |fgr.sds.ss |Other
10 |fgr.sds.ss |Monitor
11 |fgr.sds.ss |Mouse
12 |ggr.sds.se |Power
这是我尝试过的:
SELECT i.machine_name, i.location, i.macaddress, COUNT(t.machine_name) AS cnt
FROM inventory AS i
RIGHT JOIN tickets AS t USING(machine_name)
GROUP BY t.machine_name
HAVING cnt > 3
我希望此查询返回类似
的内容machine_name | location |macaddress | cnt
------------------------------------------------
fad.dfsd.dg | lab1 |aa:bb:cc:dd:ee:ff | 4
fgr.sds.ss | lab3 |bb:cc:dd:ee:ff:aa | 6
但是我得到除计数以外的所有空值
machine_name | location |macaddress | cnt
------------------------------------------
null | null |null | 4
null | null |null | 6
有人可以协助我获得想要的结果吗?
答案 0 :(得分:0)
SELECT i.machine_name, i.location, i.macaddress, COUNT(t.machine_name) AS cnt
FROM inventory AS i
JOIN tickets AS t USING(machine_name)
GROUP BY i.machine_name, i.location, i.macaddress
HAVING cnt > 3