gpt4 book ai didi

php - 连接 MySQL 时限制结果

转载 作者:行者123 更新时间:2023-11-29 21:59:50 25 4
gpt4 key购买 nike

假设您有 2 个表,例如 tbCostumers 和 tbOrders。我想显示包含所有客户、相关订单的摘要列表,并使用分页器显示它们。

进行连接后,我可以提取客户列表以及每个客户的所有订单,结果类似于:

idCostumer | name | ... | idProduct | productName | price | ...

如果客户有超过 1 个订单,则前 n 列全部相等。这样我就可以:

1 | will | ... | 12 | product1 | 123 | ...
2 | bill | ... | 23 | product2 | 321 | ...
2 | bill | ... | 24 | product3 | 231 | ...

等等

我正在尝试使用LIMIT仅提取n条记录并将它们与分页器一起使用。

第一个问题:如果客户有超过 1 个订单,通过此查询,我将看到 n 条记录,第一列中相等(id、姓名、...和其他客户信息),但最后不同,其中有产品信息。它是否正确'?还有其他方法可以提取这些信息吗?

第二个问题:如果我这样做并使用LIMIT,我可以在代表同一客户的 2 个(或更多)记录之间“剪切”结果表;因此,例如在上面的小表中,如果我限制为 2,则第三行将会丢失,即使它是上面行的一部分,因为只是同一客户的另一个订单。

我想限制不同 idCostumer 的数量,以便恰好获取 n 个顾客,即使他们在结果表中出现超过 1 次。类似 n 个不同的 idCostumer,无论它们是否重复。

这可能吗?

我希望它很清楚,解释我想要实现的目标并不容易:)

谢谢!

最佳答案

你可能想要这样的东西:

SELECT * FROM (
(SELECT * FROM tbCustomers LIMIT 3) AS c
INNER JOIN tbOrders AS o ON o.customer = c.idcustomer
);

您可以用命名列替换第一个星号,并且仅按照您喜欢的顺序接收所需的列(即:SELECT c.name, o.price FROM...)。

希望这对您有用!

编辑:更改 LIMIT 子句的值当然会更改所选客户的数量。

编辑 2:正如 Alvaro 指出的那样,您可能需要在 tbCustomers 查询中使用 order 子句。

关于php - 连接 MySQL 时限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com