我知道问题标题可能不容易理解,但是我尝试解释一下:
users_table:
id | name | admin | property_id
-----------------------------------
1 | x | 1 | 0
2 | y | 1 | 0
3 | z | 0 | 1
5 | t | 0 | 2
6 | u | 0 | 2
7 | o | 0 | 2
users_table
具有两个或多个记录,分别为admin
和一些其他记录,它们通过将admin
与{{1}进行匹配而属于这些property_id
记录之一}。最后,我想要的是id
行数据及其admin
的{{1}}。这是查询第一部分的输出:
count
直到现在我知道如何获得所需的结果,但是这里开始出现问题。我有另一个表
properties
这就是逻辑:每个 id | name | admin | property_count
-----------------------------------
1 | x | 1 | 1
2 | y | 1 | 3
有很多sells_table:
id | seller_id | sell_amount
----------------------------
1 | 3 | 250
2 | 5 | 120
3 | 7 | 100
4 | 5 | 200
,每个admin
有很多properties
。
我想要property
中每个sells
的所有记录及其admin
的计数。
然后以一种方式查询users_table
,其中每个property_id
的每个sells_table
都要计算出property
的数量和总销售量的admin
。
例如,这应该是sells
与sum
和admin
的结果:
id 2
name y
具有 name | properties | property_sells | property_amount
--------------------------------------------------------
y | 3 | 3 | 420
。属于y
的{{1}}的财产有3 properties
id 5
,也属于y(admin)
的{{1}}的财产有two
卖出, sells
中的id 7
。
我知道这不是很复杂,但是解释它的方法并不那么容易。 我愿意接受编辑和提问。 预先感谢。
答案 0 :(得分:1)
我想这就是你想要的:
select ua.id, ua.name, ua.admin, count(distinct u.id) as property_count,
sum(s.sell_amount) as amount
from users_table ua left join
users_table u
on ua.id = u.property_id left join
sales s
on s.seller_id = u.id
where ua.admin = 1
group by ua.id, ua.name, ua.admin;
答案 1 :(得分:1)
http://sqlfiddle.com/#!9/36834d/2
SELECT u.id, U.name, u.admin, COUNT(DISTINCT ut.id) property_count, SUM(st.sell_amount)
FROM users_table u
LEFT JOIN users_table ut
ON u.id = ut.property_id
LEFT JOIN sells_table st
ON ut.id = st.seller_id
WHERE u.admin = 1
GROUP BY u.id, u.admin, u.name