[英]Php MySQL Many to Many to Many condition Group By
我正在多个多对多关系表之间创建一个查询,以便将它们的值链接在一起。 我的问题是我似乎无法找到一种方法来按此查询中“服务”子表中的“服务”值分组:
SELECT
GROUP_CONCAT(containers.container_id ORDER BY containers.container_id DESC) AS container_id,
GROUP_CONCAT(containers.container_serial ORDER BY containers.container_id DESC) AS container_serial,
GROUP_CONCAT(containers.container_index ORDER BY containers.container_id DESC) AS container_index,
invoices.*,
statuses.status,
clients.client,
GROUP_CONCAT(services.service_id ORDER BY containers.container_id DESC) AS service_id,
GROUP_CONCAT(services.service ORDER BY containers.container_id DESC) AS service
FROM containers_invoices
LEFT JOIN containers
ON containers_invoices.container_id = containers.container_id
LEFT JOIN invoices
ON containers_invoices.invoice_id = invoices.invoice_id
LEFT JOIN statuses
ON invoices.status_id = statuses.status_id
LEFT JOIN clients
ON invoices.client_id = clients.client_id
LEFT JOIN invoices_services
ON invoices.invoice_id = invoices_services.invoice_id
LEFT JOIN services
ON invoices_services.service_id = services.service_id
GROUP BY containers_invoices.invoice_id
ORDER BY invoice_id DESC
现在我的结果看起来像这样:
该服务应该只显示一次,并且不会像我拥有的容器编号那样循环多次。 我知道我很接近,但我似乎无法缩小解决方案的差距。 谢谢你的帮助!
您正在按发票分组:
GROUP BY containers_invoices.invoice_id
根据我的理解,您应该按服务分组
GROUP BY services.service_id
编辑:我想我误解了这个问题。 您希望每张发票保留一行,但在您的 group_concat 中没有列出多次相同的值。
如果是这样,您可以使用 DISTINCT 关键字:
GROUP_CONCAT(DISTINCT services.service ORDER BY containers.container_id DESC) AS service
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.