2014-01-06 31 views
0

这是查询来获取用户合并查询到1排序

SELECT * FROM users 

然后为每个用户,我需要得到信息

SELECT COUNT(user_id) FROM users WHERE refer_id='{$users['user_id']}' 
SELECT COUNT(user_id), SUM(amount) FROM visitors WHERE user_id='{$users['user_id']}' 
SELECT COUNT(user_id) FROM sales WHERE user_id='{$users['user_id']}' 

它们由USER_ID从第一查询团结。我需要每隔数合并这个查询订单

+0

莫非你请发布几行预期的输出结果? – kkuilla

+0

如果你想从多个表中选择数据,你可以使用JOIN。但的确,发布一些你想要的输出数据。 – JeroenJK

回答

0

您可以嵌套子查询做到这一点:

select u.user_id, count(*) as numusers, 
     (SELECT COUNT(user_id), FROM visitors v WHERE v.user_id = u.user_id) as NumVisitors, 
     (SELECT SUM(amount) FROM visitors v WHERE v.user_id = u.user_id) as VisitorAmount, 
     (SELECT COUNT(user_id) FROM sales s WHERE s.user_id = u.user_id) as NumSales 
from users u 
group by u.user_id; 

您也可以通过加入预先汇总查询做到这一点:

select u.user_id, v.NumVisitors, v.VisitorAmount, s.NumSales 
from (select u.user_id, count(*) as NumUsers 
     from users u 
     group by u.user_id 
    ) u left outer join 
    (select v.user_id, count(user_id) as NumVisitors, sum(amount) as VisitorAmount 
     from visitors v 
     group by v.user_id 
    ) v 
    on u.user_id = v.visitor_id left outer join 
    (select s.user_id, count(user_id) as NumSales 
     from sales s 
     group by s.user_id 
    ) s 
    on s.user_id = u.user_id;