簡體   English   中英

如何從3個表中的部分列數據訂購mysql查詢輸出

[英]How to order mysql query output from partial column data in 3 tables

本質上,我正在嘗試使用上述列中的數據,將所有3個表中的Driver數據連接到一個通過regex通過mysql組織的輸出查詢中。

我要解決的問題與我的輸出數據的排序有關。 例如:我有3個表,這3個表中的每一個都有一個稱為driver的列,具有相同的數據。 區別在於驅動程序列中的“驅動程序/索引”。

借助這些數據,我計划將單據和客戶信息重新安排給喜歡的駕駛員。
例如

表|列|數據
DeliverySlip [驅動程序](kevin / 1)
PickupSlip [驅動程序](kevin / 3)
NewCustInfo [驅動程序](kevin / 2)


輸出應為:

  1. 送貨單
  2. NewCustInfo
  3. PickupSlip

代替:

  1. 送貨單
  2. PickupSlip
  3. NewCustInfo

我的代碼:

$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語句。 但是從我的理解來看,這似乎只是聯接列而不是表。 我只想根據NAME / INDEX對驅動程序進行排序,而忽略了我從3個不同的表中獲取信息的事實。 排序此數據的最佳方法是什么?

更新:

我開始和UNION一起玩耍,這就是我想要的。 下面的例子:

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

我仍然需要弄清楚每個項目最初是從哪張桌子來的。 我唯一能想到的就是將表名插入Driver列,並用定界符將其分隔,以便可以進行REGEXP處理。

像這樣在選擇中添加表名如何:

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 * FROM (SELECT PickupSlip.Driver, 
SUBSTRING_INDEX(PickupSlip.Driver, '/', -1) AS orderindex, 
SUBSTRING_INDEX(PickupSlip.Driver, '/', 1) AS thedriver,
WHERE PickupSlip.Driver 
REGEXP '{$driverget1}/' 
AND PickupSlip.Accomplished='0') DUMMY_ALIAS1
ORDER BY (orderindex+0) ASC

這是我確定的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM