【发布时间】:2011-04-10 17:01:34
【问题描述】:
您好,我有一个正在努力解决的问题,这是我第一次遇到这种类型的问题。 我有两个表,如下所示。
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
以下是部分查询的解释,然后需要组成整个查询。
我需要 child_tbl2 中 qnty 的总和:
1) 谁的父母的酒吧是 '1' 因此,id 5 从 child_tbl2 中剔除,这是因为 xid 3 在 parent_tbl1 中为 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) 并且谁的父母在 child_tbl2 中有 '0' 作为 fno 因此,id 4、6 和 7 从现有结果中排除,这是因为在它们的 fno 之一中没有找到 0,而在 xid 1 的 fno 中找到了 0
结果: 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) 检查零是否是 fno 之一。 如果我说“AND child_tbl2.fno = '0'”,我会说结果的 fno 应该是 0。我不希望这样,我需要零作为 fno 之一,以便查询对所有的求和特定 xid 中的 qnty
【问题讨论】:
标签: mysql