MySQL联接查询3张桌子

时间:2018-08-11 14:34:42

标签: mysql sql

用户表:

id  groupid username
1   1   user1 
2   1   user2
3   2   user3
4   2   user4

表:

id  groupname
1   group1
2   group2
3   group3

销售表:

id  userid  amount 
1   1   10
2   1   15
3   1   30
4   3   10
5   3   25

我想知道销售表中通过groupid而不是userid有多少行。但是sales表没有groupid字段。 我怎样才能加入这三个表来得到我想要的东西?一个联接查询有可能吗?

2 个答案:

答案 0 :(得分:0)

三个表之间的用户INNER JOIN基于它们之间的(外部)键关系,并使用groupid的WHERE条件,仅获得特定$groupid

SELECT sales.* FROM sales 
INNER JOIN user ON user.id = sales.userid 
INNER JOIN group ON group.id = user.groupid 
WHERE group.id = $groupid;

编辑: 如评论中的进一步要求,要获得特定groupid的销售总额,我们使用SUM函数。这是更新的查询:

SELECT SUM(sales.amount) AS total_sales  FROM sales 
INNER JOIN user ON user.id = sales.userid 
INNER JOIN group ON group.id = user.groupid 
WHERE group.id = $groupid;

答案 1 :(得分:0)

您只需将两个表联接即可获得所需的内容:

select u.groupid, count(*) as count, sum(s.amount) as total
  from user u
  join sales s on s.userid = u.id
  group by u.groupid;