2013-04-03 122 views
0

我一直在努力解决这个问题几天了,我似乎不能提出解决方案,我也不能看到我的错在哪里。PHP PDO - dblib MSSQL - SQL连接问题

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

我的问题在于连接,每当我做连最简单的连接时,我的查询都不会返回任何内容。以下是2个尝试过的例子。希望我只是在语法中丢失了一些东西。从dbo.VehicleJobHistory

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 

样品日期:

$ STH = $ DBH->查询(“SELECT * FROM dbo.VehicleJobHistory WHERE TimeJobRequired> ”2013年2月3日“ AND VehicleID = ”451“ “);

三千零十六万二千零九十分之四百五十一/ 8387/Springwood的/ Springwood的// 02月03日2013 12:58:23:800AM /// 0/0/451 /八千三百八十七分之三千〇一十六万三千〇七十一/ Loganholme/Loganholme // 02月03日2013 01:23:45:263AM /// 1200/4250/451/30163856/8387/Shailer Park/Shailer Park // 2013年2月3日01:45:50:450AM /// 0/0/0 451/30163965/8387/Loganholme/Runcorn // Feb 3 2013 01:48:31:200AM /// 2950/16050/451/30164712/8387/Eight Mile Plains/Eight Mile Plains // Feb 3 2013 02:09:33: 017AM /// 2450/5750/ 451/30165778/8387/Springwood/Springwood // Feb 3 2013 02:44:51:363AM /// 800/2100/ 451/30166370/8387/Loganholme/Loganholme // 201年2月3日3 03:06:28:103AM 03:28:53 AM /// 0/0/451/30166916/8387/Shailer Park/// Feb 3 2013 03:28:46:553AM /// 0/13950/451/30169626/11979/Logan Central/// Feb 3 2013年7月3日上午7:18:05:6:30AM /// 0/0/451/30169632/11979/Logan Central/Logan // ///0/0/ 451/30169783/11979/Woodridge/Springwood // Feb 3 2013 07:38:32:377AM /// 1250/6400/451/30170203/11979/Logan Central/// Feb 3 2013 08:31:52:960AM /// 0/1050 /从dbo.vehicle

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 

示例数据

$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->查询(“选择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'和 VehicleID = $ VehicleID“);

此返回bookingID的和DriverID的从VehicleJobHistory表数组:

$ STH = $ DBH->查询(“选择BookingID,DriverID FROM DBO。VehicleJobHistory WHERE TimeJobRequired>“2013年2月3日”和 VehicleID = $ VehicleID“);

我用尽几乎所有其他组合我能想出,但只要我添加一个连接到我的查询我不似乎得到任何工作。

如果任何人有经验,这个问题还是可以点我在正确的方向,我将非常感激。

提前感谢!

回答

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