我在我的数据库中得到了堆栈,我的问题是我有3个表,2个有多对多的关系,另一个是从2个表中生成。
我希望分页跟随1个表,它意味着2个表父,我想分页跟随2个表父项行中的1个
示例
表客户:
ID名称电子邮件
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 -----产品名称
1 -----洗发水
2 -----古柯 3 -----热狗
4 ----- Kit kat
5 -----奶酪
6 -----意大利面 7 -----巧克力
8 -----花生酱
9 -----汉堡包 10 -----三明治
表CustomerBuyProduct
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
但我不知道为这种情况做出选择陈述 有人可以帮帮我吗? 非常感谢你
答案 0 :(得分:0)
尝试将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