【问题标题】:Merge Matching MySql results for XLS Export合并用于 XLS 导出的匹配 MySql 结果
【发布时间】:2012-08-13 18:11:59
【问题描述】:

所以我正在为电子商务网站添加 XLS 导出以生成销售报告。

我已经从第一个表 Orders 导出正常。

我的问题是我想添加产品详细信息以及 ModelNum 和 Quantity,它们分别存储在另一个表中 OrderItemDetails

我可以使用 INNER JOIN 检索此信息,但它会重复所有订单信息。

我想做的不是在 xls 中为每个产品 ModelNum 和 Qty 创建一个新行,而是我想将所有产品结果合并到一列中。例如 ModelNum1(3),ModelNum2(1)

我用来生成 XLS 文件的脚本需要一个 var 中的 select 语句。

举例

$q = "SELECT o.Date AS Date,o.AccountID AS AccountID, o.Status AS Status, d.ModelNumber AS ModelNumber, d.Quantity AS Quantity
FROM Orders AS o
INNER JOIN OrderItemDetails AS d
  ON o.ID = d.OrderID   
  WHERE o.Status = 'Paid'
  AND a.Type ='Shipping'
  ORDER BY o.Date ASC";

所以我的问题是“有没有办法将匹配结果合并到一列中?” 我应该使用 INNER JOIN 以外的东西吗?

感谢任何帮助!

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    看看 group_concat 函数。

    【讨论】:

    • 听起来像我想要使用的。如果我尝试 GROUP_CONCAT(DISTINCT d.ModelNumber) AS ModelNumber,似乎只加载 1 行
    • 这让我找到了正确的方向,谢谢!任何对我使用的选择语句感兴趣的人是: $q = " SELECT o.Date, o.AccountID, o.Status, GROUP_CONCAT(DISTINCT d.ModelNumber, '(', d.Quantity, ')' ORDER BY ModelNumber SEPARATOR ',') Order_Items, FROM Orders o JOIN OrderItemDetails d ON (d.OrderID = o.id) WHERE o.Status = 'Paid' AND a.Type ='Shipping' GROUP BY o.id";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2012-08-27
    • 2021-02-08
    • 2014-04-19
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多