Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 如何从3个表中的部分列数据排序mysql查询输出_Php_Mysql_Join_Union - Fatal编程技术网

Php 如何从3个表中的部分列数据排序mysql查询输出

Php 如何从3个表中的部分列数据排序mysql查询输出,php,mysql,join,union,Php,Mysql,Join,Union,从本质上讲,我试图使用上述列中的数据,通过mysql将所有3个表中的驱动程序数据连接到一个由regex组织的输出查询中 我试图解决的问题与输出数据的顺序有关。 例如:我有3个表,这3个表中的每个表都有一个名为driver的列,其中包含相同的数据。差异是驱动程序列中的“驱动程序/索引” 有了这些数据,我计划根据司机的喜好重新安排单据和客户信息例如 表|列|数据 送货单[司机](凯文/1) 皮卡滑翔[驾驶员](凯文/3) NewCustInfo[司机](凯文/2) 输出应为: 送货单 新客户信息

从本质上讲,我试图使用上述列中的数据,通过mysql将所有3个表中的驱动程序数据连接到一个由regex组织的输出查询中

我试图解决的问题与输出数据的顺序有关。 例如:我有3个表,这3个表中的每个表都有一个名为driver的列,其中包含相同的数据。差异是驱动程序列中的“驱动程序/索引”

有了这些数据,我计划根据司机的喜好重新安排单据和客户信息
例如

表|列|数据
送货单[司机](凯文/1)
皮卡滑翔[驾驶员](凯文/3)
NewCustInfo[司机](凯文/2)


输出应为:

  • 送货单
  • 新客户信息
  • 而不是:

  • 送货单
  • 新客户信息

  • 我的代码:

    $driverget1="Kevin/1"; // this is grabbed through an SQL SELECT statement
    $drivername=explode($driverget1,"/");
    $tablearray2 = "DeliverySlip|PickupSlip|NewCustInfo";
    $table2 = explode("|", $tablearray2);
    $Query = "SELECT * FROM `bwa1`.`$table2[0]`,`bwa1`.`$table2[1]`,`bwa1`.`$table2[2]` WHERE `Driver` REGEXP '{$drivername[0]}/' AND `Accomplished`='0' ORDER BY `Driver` REGEXP '/[[:digit:]]' ASC";
    
    当然,我得到了一个模糊的错误。所以,我在考虑使用JOIN语句。然而,据我所知,这似乎只是连接列而不是表。我只想根据名称/索引对驱动程序进行排序,而忽略从3个不同的表中获取信息这一事实。对这些数据进行排序的最佳方式是什么

    更新:

    我开始和工会打交道,这就是我想要的。 下面是一个例子:

    SELECT * FROM 
    (
      SELECT NewCustInfo.Driver,NewCustInfo.id,NewCustInfo.Accomplished 
            FROM NewCustInfo WHERE NewCustInfo.Driver 
            REGEXP 'Test123/' AND NewCustInfo.Accomplished='0' 
            ORDER BY NewCustInfo.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS1
    
    UNION ALL
    
    SELECT * FROM 
    ( 
      SELECT PickupSlip.Driver,PickupSlip.id,PickupSlip.Accomplished 
            FROM PickupSlip WHERE PickupSlip.Driver 
            REGEXP 'Test123/' AND PickupSlip.Accomplished='0' 
            ORDER BY PickupSlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS2
    
    UNION ALL
    
    SELECT * FROM 
    ( 
      SELECT DeliverySlip.Driver,DeliverySlip.id,DeliverySlip.Accomplished 
            FROM DeliverySlip WHERE DeliverySlip.Driver 
            REGEXP 'Test123/' AND DeliverySlip.Accomplished='0' 
            ORDER BY DeliverySlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS3
    

    我仍然需要弄清楚,在完全合并之后,每个项目最初来自哪个表。我唯一能想到的是将表名插入到驱动程序列中,并用分隔符将其分隔开,这样它就可以是REGEXP。

    在select中添加表名如何,如下所示:

    SELECT * FROM  
    (  
        SELECT NewCustInfo.Driver,NewCustInfo.id,NewCustInfo.Accomplished,'NewCustInfo' as tbname
        FROM NewCustInfo WHERE NewCustInfo.Driver 
        REGEXP 'Test123/' AND NewCustInfo.Accomplished='0' 
        ORDER BY NewCustInfo.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS1
    
    UNION ALL
    
    SELECT * FROM 
    ( 
        SELECT PickupSlip.Driver,PickupSlip.id,PickupSlip.Accomplished,'PickupSlip' as tbname
        FROM PickupSlip WHERE PickupSlip.Driver 
        REGEXP 'Test123/' AND PickupSlip.Accomplished='0' 
        ORDER BY PickupSlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS2
    
    UNION ALL
    
    SELECT * FROM 
    ( 
        SELECT DeliverySlip.Driver,DeliverySlip.id,DeliverySlip.Accomplished,'DeliveryShip' as tbname
        FROM DeliverySlip WHERE DeliverySlip.Driver 
        REGEXP 'Test123/' AND DeliverySlip.Accomplished='0' 
        ORDER BY DeliverySlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS3
    

    在select中添加表名如何,如下所示:

    SELECT * FROM  
    (  
        SELECT NewCustInfo.Driver,NewCustInfo.id,NewCustInfo.Accomplished,'NewCustInfo' as tbname
        FROM NewCustInfo WHERE NewCustInfo.Driver 
        REGEXP 'Test123/' AND NewCustInfo.Accomplished='0' 
        ORDER BY NewCustInfo.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS1
    
    UNION ALL
    
    SELECT * FROM 
    ( 
        SELECT PickupSlip.Driver,PickupSlip.id,PickupSlip.Accomplished,'PickupSlip' as tbname
        FROM PickupSlip WHERE PickupSlip.Driver 
        REGEXP 'Test123/' AND PickupSlip.Accomplished='0' 
        ORDER BY PickupSlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS2
    
    UNION ALL
    
    SELECT * FROM 
    ( 
        SELECT DeliverySlip.Driver,DeliverySlip.id,DeliverySlip.Accomplished,'DeliveryShip' as tbname
        FROM DeliverySlip WHERE DeliverySlip.Driver 
        REGEXP 'Test123/' AND DeliverySlip.Accomplished='0' 
        ORDER BY DeliverySlip.Driver REGEXP '/[[:digit:]]' ASC
    ) DUMMY_ALIAS3
    
    这就是我接受的密码


    这就是我想要的代码。

    这正是我想要的!非常感谢。每天学习新的东西!那正是我要找的!非常感谢。每天学习新的东西!