Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL显示组_CONCAT的特定结果_Php_Mysql - Fatal编程技术网

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')