PHP MySQL显示组_CONCAT的特定结果
我有一张这样的桌子:PHP MySQL显示组_CONCAT的特定结果,php,mysql,Php,Mysql,我有一张这样的桌子: Company CompanyEntity OrderNumber DeliveryDate Deeway HS,Deeway Pearl HS,Deeway Stony HS 20779,20780,1273 4608580,4608558 2020-11-11 Zaper LTD,Zaper CP LTD
Company CompanyEntity OrderNumber DeliveryDate
Deeway HS,Deeway Pearl HS,Deeway Stony HS 20779,20780,1273 4608580,4608558 2020-11-11
Zaper LTD,Zaper CP LTD 9995,4295 4630230,4607371 2020-11-11
Wilder 4224 6630210,7601371 2020-11-11
在同一张表上,我有另一列,如下图所示,用户可以单击并查看列出的所有序列/项目。我没有将该列添加到上表中,因为此帖子的格式不太好:
View/Edit Company
<a href="$id1">View</a> Deeway HS,Deeway Pearl HS,Deeway Stony HS
<a href="$id2">View</a> Zaper LTD,Zaper CP LTD
<a href="$id3">View</a> Wilder
我尝试了以下内容,但缺少记录:
SELECT
nextgenorder_id,
GROUP_CONCAT(DISTINCT nextgenorder_companyname) AS nextgenorder_companyname,
GROUP_CONCAT(DISTINCT nextgenorder_company_entity) AS nextgenorder_company_entity,
GROUP_CONCAT(DISTINCT nextgenorder_ordernumber) AS nextgenorder_ordernumber,
nextgenorder_deliverydate,
nextgenorder_item,
nextgenorder_serialnumber
FROM nextgenorders2
WHERE
(nextgenorder_ordernumber='$nextgenorder_ordernumber' AND nextgenorder_deliverydate='$nextgenorder_deliverydate')
OR
(nextgenorder_company_entity='$nextgenorder_company_entity' AND nextgenorder_deliverydate='$nextgenorder_deliverydate')
OR
(nextgenorder_companyname='$nextgenorder_companyname' AND nextgenorder_deliverydate='$nextgenorder_deliverydate')
OR
(nextgenorder_shiptoadd1='$nextgenorder_shiptoadd1' AND nextgenorder_deliverydate='$nextgenorder_deliverydate')
*请注意,有时会在以后分配序列号。并不总是有序列号
谢谢您可以使用另一个where子句
SELECT
nextgenorder_id,
GROUP_CONCAT(DISTINCT nextgenorder_companyname) AS nextgenorder_companyname,
GROUP_CONCAT(DISTINCT nextgenorder_company_entity) AS nextgenorder_company_entity,
GROUP_CONCAT(DISTINCT nextgenorder_ordernumber) AS nextgenorder_ordernumber,
nextgenorder_deliverydate,
GROUP_CONCAT(DISTINCT nextgenorder_item) nextgenorder_item,
GROUP_CONCAT(DISTINCT nextgenorder_serialnumber) nextgenorder_serialnumber
FROM nextgenorders2
WHERE
(nextgenorder_companyname LIKE CONCAT(SUBSTRING_INDEX('Deeway HS', ' ', 1),'%') AND nextgenorder_deliverydate='2020-11-11')
少了什么?查询完全按照您编程的方式进行,您仅使用where子句选择前两行,因为nextgenorder_ordernumber='4608580'其余部分仅指示第一行,因此显示您确切想要的结果。在SQL FIDLE上,它不显示$nextgenorder_订单号$nextgenorder_company_实体和$nextgenorder_companyname变量。是的,我知道这就是为什么我没有得到所有的记录。这是我的问题。如何使查询检查每个值?如果公司名称为Deeway X,则有效,但如果公司名称为Deeway X,则无效。是的,它当然适用于每个Deeway。请看,请给我一个在sql FIDLE中不起作用的示例。你应该考虑为mither公司插入一个克隆,而不是以我发现问题的名义转达。变量是Deeway HS,而不是Deeway,因此当我执行WHERE子句时,它将进入下一个公司名称,如“Deeway HS%”,并且它不会捕获其他记录。我想我必须先在变量上做一个子串,但它似乎不是一直都是100%准确的。你还有其他更准确的解决方案吗?我已经编辑了我的答案,但正如我之前所说的,名字对这类事情是不好的,因为当它被称为Sa Deeway inc.并属于同一个企业集团时会发生什么。将属于同一公司的公司合并在一起不幸的是,我无法完全控制数据。我仅有的唯一标识符是公司名称、订单号和公司实体,它们都不是真正唯一的标识ID。欢迎提出任何建议。
SELECT
nextgenorder_id,
GROUP_CONCAT(DISTINCT nextgenorder_companyname) AS nextgenorder_companyname,
GROUP_CONCAT(DISTINCT nextgenorder_company_entity) AS nextgenorder_company_entity,
GROUP_CONCAT(DISTINCT nextgenorder_ordernumber) AS nextgenorder_ordernumber,
nextgenorder_deliverydate,
GROUP_CONCAT(DISTINCT nextgenorder_item) nextgenorder_item,
GROUP_CONCAT(DISTINCT nextgenorder_serialnumber) nextgenorder_serialnumber
FROM nextgenorders2
WHERE
(nextgenorder_companyname LIKE CONCAT(SUBSTRING_INDEX('Deeway HS', ' ', 1),'%') AND nextgenorder_deliverydate='2020-11-11')