如何从另一个表中获取子列的总和

时间:2017-05-02 07:48:28

标签: mysql vb.net

我有一个可以获取会员信息的系统。我希望我的系统能够自动获得获奖者的姓名。条件是如果该成员招募了6个人,他/她卖掉了15个肥皂,他/她的下线每个卖掉了15个肥皂。我到目前为止使用mysql和VB.NET,我有这个查询。

SELECT  *
FROM    members m
LEFT JOIN
        geneology g
ON      SUM(m.status) >=90 AND
        m.upline = g.parent_id;

但是我得到了

  

1111错误 - 无效使用群组功能

表1有列

id, name, status 'This is where the soap data are stored', downlines, upline

表2有列

id, parent_id, child_id

请帮助我新的SQL查询

1 个答案:

答案 0 :(得分:0)

首先,ON子句定义了用于匹配两个表的行的标准,因此SUM() >= 90不应该留在那里(事实上,这就是你得到的原因)那个错误)。

我将假设对于桌面上的人membersupline是招募他/她的成员的ID。如果这是正确的,您可以像这样建立您的查询:

select  t1.id, t1.name
from    members t1
join    geneology t2
on      t1.id = t2.parent_id
join    members t3
on      t2.child_id = t3.upline
where   t1.status = 15
group by t1.id, t1.name
having   count(distinct t3.id) = 6 and
         sum(t3.status) = 90

这将使用members表两次,一次用于父级,一次用于子级,两个表由geneology表关联。

where子句中的条件是针对父级的,然后对每个父级的子级数据进行分组,并且仅返回其子级满足having子句中的条件的父级。