我的数据库中有堆栈,我的问题是我有 3 个表,其中 2 个具有多对多关系,另一个是从 2 个表生成的。
我想要分页遵循 1 个表,这意味着 2 个父表,并且我想要分页遵循 2 个表父行中的 1 个
示例
表客户:
ID Name Email
1 Peter peter@gmail.com
2 Jonh john@gmai.com
3 Sara sara@gmail.com
4 Tom tom@gmail.com
5 Jet jet@gmail.com
2表产品
ID ----- Product Name
1 ----- Shampoo
2 ----- Coca
3 ----- Hotdog
4 ----- Kit kat
5 ----- Cheese
6 ----- Pasta
7 ----- Chocolate
8 ----- Peanut Butter
9 ----- Hamburger
10 ----- Sandwich
表客户购买产品
ID CusID ProductID
1 1 1
2 1 3
3 1 4
4 2 1
5 2 10
6 3 4
7 3 10
8 3 2
9 3 6
10 3 5
11 3 3
12 4 1
13 5 1
我的问题是,当我选择并左连接 3 个表时,它们会显示 11 行,是的,这是正确的,因为我想从三个表中获取所有行 但我希望分页遵循客户表,这意味着在第 1 页中只有 3 行或 5 行,它将显示客户表中的总客户以及他们购买的产品看起来像
总计:3 行
No. Customer Name Bought Product
Shampoo
1 Peter Coca
Hotdog
2 Jonh Shampoo
Sandwich
Kitkat
Sandwich
3 Sara Coca
Cheese
Hotdog
Page 1/2
总计:2 行
4 Tom Shampoo
5 Jet Shampoo
但我不知道为这种情况做出选择语句 有人可以帮助我吗? 非常感谢
最佳答案
尝试将 GROUP_CONCAT
与 GROUP BY Customer.ID
子句结合使用。
SELECT
Customer.ID, Customer.Name, GROUP_CONCAT(products.Name SEPARATOR ' ')
FROM
Customer LEFT JOIN
CustomerBuyProduct ON CusID = Customer.ID LEFT JOIN
products ON ProductID = products.ID
GROUP BY
Customer.ID
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
关于php - 限制和偏移多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667063/