MySQL SUM查询

时间:2010-09-10 11:57:55

标签: mysql

问候,我有一个我正在努力的查询,这是我第一次遇到这种类型的查询。 我有两个表,如下所示。

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中的数量

1 个答案:

答案 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