This question already has answers here:
Inner join with count() on three tables
                                
                                    (6个答案)
                                
                        
                                2年前关闭。
            
                    
用户表:

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表中有多少行。但是sales表没有groupid字段。
我怎样才能加入这三个表来得到我想要的东西?一个联接查询有可能吗?

最佳答案

三个表之间的用户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;

关于mysql - MySQL对3个表的联接查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51800680/

10-15 19:45