php - 限制和偏移多对多关系

标签 php mysql sql-server

我的数据库中有堆栈,我的问题是我有 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_CONCATGROUP 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/

相关文章:

php - 为什么在查询中设置 group_concat_max_len 变量会导致 PHP 的 bind_param() 出错?

sql - 检索插入的最后一行 Uniqueidentifier,它不是 IDENTITY

SQL - 合并两个表,每个表都有一些唯一的列

php - 使用 Doctrine 2 获取最后一个插入 id?

php - Mailchimp API v3.0 添加待处理成员无需确认电子邮件

javascript - 如何将文本字段 ('+<>$"中的特殊字符保存到数据库中,然后使用 PHP 检索它们?

mysql - 如何计算值(value)何时超过平均值

sql-server - 如何在 SQL Server Compact Edition 中实现数据透视?

php - 在 Codeigniter 中组合 mysql AND OR 查询

php - JQuery 旋钮显示数字变化