我几天来一直在努力解决这个问题,我似乎无法找到解决方案,也无法看到我出错的地方。
我试图在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 // 2月3日 2013 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/八英里平原/八 Mile Plains // 2013年2月3日02:09:33:017AM /// 2450/5750 / 451 / 30165778/8387 / Springwood / Springwood // 2013年2月3日 02:44:51:363AM ///二千一分之八百/ 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 / // Feb 3 2013 07:18:05:633AM /// 0/0/451/30169632/11979 / Logan Central / Logan 中环// 2013年2月3日07:18:33:120 AM /// 0/0 / 451/30169783/11979 / Woodridge / Springwood // 2013年2月3日 07:38:32:377AM /// 1250/6400/451/30170203/11979 / Logan Central / // Feb 3 2013 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 . "/";
4分之451/120395399168分之5/ -1 / 3 /
当我尝试运行包含连接的任何查询时,我得不到结果......
这不会返回任何内容:
$ STH = $ DBH-> query(“SELECT dbo.VehicleJobHistory.BookingID, dbo.VehicleJobHistory.DriverID来自dbo.Vehicle INNER JOIN dbo.VehicleJobHistory ON dbo.Vehicle.VehicleID = dbo.VehicleJobHistory.VehicleID WHERE TimeJobRequired> '09 / 03/2013'和 VehicleID = $ VehicleID“);
这将从VehicleJobHistory表返回一个bookingID和DriverID的数组:
$ STH = $ DBH->查询(“SELECT BookingID,DriverID FROM dbo.VehicleJobHistory WHERE TimeJobRequired>”02/03/2013“AND VehicleID = $ VehicleID“);
我已经尝试了几乎所有其他组合我可以提出,但只要我在我的查询中添加一个连接,我似乎没有任何工作。
如果有人对这个问题有经验或者能指出我正确的方向,我会非常感激。
提前致谢!
答案 0 :(得分: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