我有一个可以获取会员信息的系统。我希望我的系统能够自动获得获奖者的姓名。条件是如果该成员招募了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查询
答案 0 :(得分:0)
首先,ON
子句定义了用于匹配两个表的行的标准,因此SUM() >= 90
不应该留在那里(事实上,这就是你得到的原因)那个错误)。
我将假设对于桌面上的人members
,upline
是招募他/她的成员的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
子句中的条件的父级。