gpt4 book ai didi

php - 在一行中显示两行或多行

转载 作者:行者123 更新时间:2023-11-29 06:14:12 27 4
gpt4 key购买 nike

我有这四个表:

table 上优惠

  • 编号
  • id_company
  • 描述

表格公司

  • 编号
  • 姓名

表 company_customer

  • id_company
  • id_customer

table 上顾客

  • 编号
  • 姓名

我需要获取报价、提供报价的公司以及与这些公司有关系的客户。这很简单。

我输入的查询如下:

SELECT c.name, c.description, cu.name cu_name 
FROM companies c
INNER JOIN offers o ON o.id_company = c.id
INNER JOIN company_customer cc ON cc.id_company = c.id
INNER JOIN customers cu ON cu.id = cc.id_customer
WHERE o.id_company = 1
ORDER BY o.id_company;

“问题”是有时一家公司的报价适用于不同的客户。

让我用一个真实的例子来告诉你这个问题:

'易趣' | '报价 1' | '客户1''易趣' | '报价 1' | '客户 2'

但我需要将两行连接或显示在一行中(仅在公司和报价相同但客户不同的情况下)。换句话说,我需要以下结果:

'易趣' | '报价 1' | '客户1,客户2'

我使用 PHP 和 MySQL。我知道这可以用 PHP 来完成,但我想知道是否可以只用 MySQL 来完成。

有什么想法吗??

任何帮助将不胜感激。我为我的英语水平道歉。我知道这不是我最好的。

提前感谢您的时间和关注。

最佳答案

您需要按公司和报价分组,因此您需要此查询:

SELECT
c.`name` AS companyName,
o.description AS offerName,
GROUP_CONCAT(cs.`name` ORDER BY cs.id) AS customerNames
FROM
companies c
INNER JOIN offers o ON o.id_company = c.id
INNER JOIN company_customer cc ON cc.id_company = c.id
INNER JOIN customers cs ON cs.id = cc.id_customer
WHERE
c.id = 1
GROUP BY
c.`name`,
o.description

Amyway 在你的数据库中没有报价和客户之间的关系,所以你可以考虑添加这样的。否则公司的所有客户将出现在该公司的每个报价中:

+-------------+-----------+----------------------------------+
| companyName | offerName | customerNames |
+-------------+-----------+----------------------------------+
| Ebay | Offer 1 | Customer 1,Customer 2,Customer 3 |
| Ebay | Offer 2 | Customer 1,Customer 2,Customer 3 |
+-------------+-----------+----------------------------------+
2 rows in set

但如果你确实想要那样,那么一切都很好。

关于php - 在一行中显示两行或多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768989/

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