问候,我有一个我正在努力的查询,这是我第一次遇到这种类型的查询。 我有两个表,如下所示。
xid是parent_tbl1中的主键,而xid是child_tbl2中的外键
parent_tbl1
xid pub
1 1
2 1
3 0
4 1
child_tbl2
id ttype fno xid qnty
1 A 0 1 0
2 A 1 1 3
3 B 1 1 4
4 A 1 2 1
5 A 1 3 2
6 A 1 4 3
7 A 1 4 1
8 A 1 1 1
下面是部分查询的exlanation,然后需要构成整个查询。
我需要在child_tbl2中使用qnty的SUM:
1)谁的父母的酒吧是'1' 因此,从child_tbl2中删除了id 5,这是因为在parent_tbl1中xid 3为0
结果: child_tbl2
id ttype fno xid qnty
1 A 0 1 0
2 A 1 1 3
3 B 1 1 4
4 A 1 2 1
6 A 1 4 3
7 A 1 4 1
8 A 1 1 1
2)AND的父表在子表中有ttype'A' 因此,从现有结果中删除id 3,因为id 3的ttype是B
结果: child_tbl2
id ttype fno xid qnty
1 A 0 1 0
2 A 1 1 3
4 A 1 2 1
6 A 1 4 3
7 A 1 4 1
8 A 1 1 1
3)和谁的父母有'0'作为他们在child_tbl2的fno的一个 因此,id 4,6&从现有的结果中删除了7,这是因为在他们的一个fno中没有找到0,而0被发现是xid 1的fno之一
结果: child_tbl2
id ttype fno xid qnty
1 A 0 1 0
2 A 1 1 3
8 A 1 1 1
查询的答案应为4
以下是我所拥有的。
SELECT sum(child_tbl2.qnty), parent_tbl1.xid, parent_tbl1.pub, child_tbl2.ttype, child_tbl2.fno, child_tbl2.xid
FROM parent_tbl1, child_tbl2
WHERE parent_tbl1.xid = child_tbl2.xid
AND parent_tbl1.pub = '1'
AND child_tbl2.ttype = 'A'
AND child_tbl2.fno ?
如果有可能,我不知道如何告诉dbms(MySQL)检查Zero是否是fno之一。 如果我说“AND child_tbl2.fno ='0'”,我会说结果的fno应该是0.我不想那样,我需要零作为fno的一个,以便查询到SUM全部那特定的xid中的数量
答案 0 :(得分:2)
SELECT SUM(DISTINCT src.qnty) as qnty
FROM tbl2 AS src
INNER JOIN tbl1 AS pub
ON src.xid=pub.xid
INNER JOIN tbl2 AS fno
ON pub.xid=fno.xid
WHERE pub.pub=1
AND src.ttype='A'
AND fno.fno=0