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