0

我已经在这个问题上苦苦挣扎了几天,我似乎无法提出解决方案,我也看不出我哪里出错了。

我试图在 sql 中编写一个有几个连接的查询,因为我需要显示在几个不同的表中找到的信息。

我的问题在于连接,每当我做最简单的连接时,我的查询都不会返回任何内容。下面是我尝试过的两个例子。希望我只是在语法中遗漏了一些东西。

dbo.VehicleJobHistory:

VehicleID           Number
BookingID           Text
DriverID            Number
PickupSuburb        Text
DestinationSuburb   Text
ReasonDispatched    Text
TimeJobRequired     Date/Time
TimeCarAccepted     Date/Time
TimeCarPickup       Date/Time
TimeCarComplete     Date/Time
KmToPickup          Number
KmOfJob             Number
_timestamp          DateTime

dbo.VehicleJobHistory 中的示例日期:

$STH = $DBH->query('SELECT * FROM dbo.VehicleJobHistory WHERE TimeJobRequired > "02/03/2013" AND VehicleID = "451"');

451/30162090/8387/Springwood/Springwood//2013 年 2 月 3 日 12:58:23:800AM///0/0/ 451/30163071/8387/Loganholme/Loganholme//2013 年 2 月 3 日 01:23:45:263AM/ //1200/4250/ 451/30163856/8387/Shailer Park/Shailer Park//2013 年 2 月 3 日 01:45:50:450AM///0/0/ 451/30163965/8387/Loganholme/Runcorn//2013 年 2 月 3 日01:48:31:200AM///2950/16050/451/30164712/8387/八英里平原/八英里平原//2013 年 2 月 3 日上午 02:09:33:017///2450/5750/451/30165778/ 8387/Springwood/Springwood//2013 年 2 月 3 日 02:44:51:363AM///800/2100/ 451/30166370/8387/Loganholme/Loganholme//2013 年 2 月 3 日 03:06:28:103AM///0/ 0/ 451/30166916/8387/Shailer Park///2013 年 2 月 3 日 03:28:46:553AM///0/13950/451/30169626/11979/Logan Central///2013 年 2 月 3 日 07:18:05: 633AM///0/0/ 451/30169632/11979/洛根中央/洛根中央//2013 年 2 月 3 日 07:18:33:120AM///0/0/ 451/30169783/11979/伍德里奇/斯普林伍德//2013 年 2 月 3 日 07:38:32:377AM///1250/6400/ 451/30170203/11979/Logan Central///2013 年 2 月 3 日08:31:52:960AM///0/1050/

dbo.Vehicle:

VehicleID          Number 
CarNumber          Text 
PrimaryFleetID     Number 
Conditions         Text 
RegoNum            Text 
RegoExpiry         Date/Time 
TaxiLicNum         Number 
TaxiLicExpiry      Date/Time
VehicleMake        Text 
VehicleModel       Text 
VehicleYear        Text 
OwnerID            Number 
OperatorID         Number

来自 dbo.vehicle 的样本数据

$STH = $DBH->query('SELECT * FROM dbo.Vehicle WHERE  VehicleID = "451"');

echo $row->VehicleID  . "/"; 
echo $row->CarNumber  . "/"; 
echo $row->PrimaryFleetID . "/"; 
echo $row->Conditions . "/"; 
echo $row->OwnerID . "/"; 
echo $row->OperatorID . "/";

451/4/5/120395399168/-1/3/

当我尝试运行任何包含连接的查询时,我没有得到任何结果......

这什么都不返回:

$STH = $DBH->query("SELECT dbo.VehicleJobHistory.BookingID, dbo.VehicleJobHistory.DriverID FROM dbo.Vehicle INNER JOIN dbo.VehicleJobHistory ON dbo.Vehicle.VehicleID = dbo.VehicleJobHistory.VehicleID WHERE TimeJobRequired > '09/03 /2013' AND VehicleID = $VehicleID");

这会从 VehicleJobHistory 表中返回一个 bookingID 和 DriverID 的数组:

$STH = $DBH->query("SELECT BookingID, DriverID FROM dbo.VehicleJobHistory WHERE TimeJobRequired > "02/03/2013" AND VehicleID = $VehicleID");

我已经尝试了几乎所有其他我能想到的组合,但是一旦我在我的查询中添加一个连接,我似乎没有任何工作。

如果有人对此问题有经验或可以指出正确的方向,我将不胜感激。

提前致谢!

4

1 回答 1

1

SQL 需要是左连接。

SELECT dbo.VehicleJobHistory.BookingID
    , dbo.VehicleJobHistory.DriverID
FROM dbo.Vehicle
LEFT JOIN dbo.VehicleJobHistory
    ON dbo.Vehicle.VehicleID = dbo.VehicleJobHistory.VehicleID
        AND dbo.VehicleJobHistory.TimeJobRequired > '09/03/2013'
WHERE dbo.Vehicle.VehicleID = $VEHICLEID
于 2013-04-04T01:32:44.173 回答