【问题标题】:SQL: how do i find customer orders with customers?SQL:我如何找到客户订单?
【发布时间】:2013-08-08 15:47:56
【问题描述】:

我有两张桌子: 1.customer 2.customer_order

Customer 表包含客户数据(duh),customer_order 包含所有订单。 我可以通过customer.id=customer_order.id_customer 加入他们。

一切都好,但现在我想要一个查询,我有所有客户 ID,接下来是这些客户下的订单(customer_order.id)(带有订单日期)

像这样:

customer 100    order 4, order 5, order 9
customer 101    order 7, order 8, order 15

我有这个,但没有给我结果,它将所有带有订单的客户 ID 放在不同的行上:

SELECT c.id, c.firstname, co.id
FROM customer c
JOIN customer_order co
ON c.id=co.id_customer
;

【问题讨论】:

  • 不分组 - order by c.id, c.firstname
  • 您希望如何显示日期?您的示例输出没有显示。
  • 如果您有应用程序级别/表示层的数据显示问题(例如使用一点 PHP),请考虑处理问题

标签: mysql


【解决方案1】:

可以使用 group_concat 函数

select c.id, c.firstname, GROUP_CONCAT(co.id SEPARATOR ',')
from custom c
join custom_order co
group by c.id

这会返回类似的东西

customer 100 | 4,5,9
customer 101 | 7,8,15

【讨论】:

  • 我得到了这个结果:查询:select c.id, c.firstname, GROUP_CONCAT(co.id SEPARATOR ',') from customer c join customer_order co group by c.id LIMIT 0, 100。 .. 错误代码:126 表'/tmp/#sql_42a_0.MYI'的密钥文件不正确;尝试修复它执行时间:00:00:00:000 传输时间:00:00:00:000 总时间:00:00:00:000
【解决方案2】:

你试过了吗:

SELECT c.id, c.firstname, co.id
FROM customer c
INNER JOIN customer_order co
ON c.id=co.id_customer
ORDER BY c.id;

它是 LEFT 或 INNER,根据您使用的不同,您会得到不同的结果,我认为 LEFT 是您想要使用的。然后,当您检索数据时,您可能必须将其放入:

array["custid"][] = co.id

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2013-11-08
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多