Sql server sql server内部联接查询未执行
这个查询有什么问题? 这些是我正在用的桌子-Sql server sql server内部联接查询未执行,sql-server,Sql Server,这个查询有什么问题? 这些是我正在用的桌子- create table PS3_Vehicle ( ID int IDENTITY(1,1) NOT NULL Primary Key, DealerID varchar(255) NOT NULL, VehicleID varchar(255) UNIQUE NOT NULL, VehicleName varchar(255) NOT NULL, Capacity BIGINT NOT NULL
create table PS3_Vehicle
(
ID int IDENTITY(1,1) NOT NULL Primary Key,
DealerID varchar(255) NOT NULL,
VehicleID varchar(255) UNIQUE NOT NULL,
VehicleName varchar(255) NOT NULL,
Capacity BIGINT NOT NULL
);
create table PS3_VehicleBooking
(
ID int IDENTITY(1,1) NOT NULL Primary Key,
BookingID varchar(255) NOT NULL UNIQUE,
VehicleID varchar(255) NOT NULL,
StartDate date NOT NULL,
EndDate date NOT NULL
);
CREATE TABLE PS3_Dealer(
ID int IDENTITY(1,1) NOT NULL Primary KEY,
DealerID varchar(255) NULL,
DealerName varchar(255) NOT NULL,
ContactNo varchar(255) NOT NULL,
NoOfVehicles bigint NOT NULL,
CommittedDate date NOT NULL
);
SELECT DealerID, PS3_Vehicle.VehicleID, VehicleName, StartDate, EndDate
FROM PS3_Vehicle
INNER JOIN PS3_VehicleBooking ON PS3_Vehicle.VehicleID != PS3_VehicleBooking.VehicleID AS W
INNER JOIN PS3_Dealer ON W.DealerID = PS3_Dealer.DealerID
AND CommittedDate > GETDATE();
试试这个:
SELECT w.DealerID, w.VehicleID, w.VehicleName, b.StartDate, b.EndDate
FROM PS3_Vehicle w
INNER JOIN PS3_VehicleBooking b ON w.VehicleID != b.VehicleID
INNER JOIN PS3_Dealer d ON W.DealerID = d.DealerID
AND CommittedDate > GETDATE();
试试这个:
SELECT w.DealerID, w.VehicleID, w.VehicleName, b.StartDate, b.EndDate
FROM PS3_Vehicle w
INNER JOIN PS3_VehicleBooking b ON w.VehicleID != b.VehicleID
INNER JOIN PS3_Dealer d ON W.DealerID = d.DealerID
AND CommittedDate > GETDATE();
我想你可以在
PS3_车辆
和PS3_车辆预订
之间进行一个简单的左连接
,其中PS3_车辆预订
与该车辆不匹配:
SELECT v.DealerID, v.VehicleID, v.VehicleName, vb.StartDate, vb.EndDate
FROM PS3_Vehicle v
LEFT JOIN PS3_VehicleBooking vb ON v.VehicleID = vb.VehicleID
WHERE vb.VehicleID IS NULL
这将为您提供
PS3\u VehicleBooking
中不存在的车辆,这使得startDate
和endDate
总是NULL
我想你可以通过在PS3_车辆
和PS3_车辆预订
之间的PS3_车辆预订
简单的PS3_车辆预订
与该车辆不匹配:
SELECT v.DealerID, v.VehicleID, v.VehicleName, vb.StartDate, vb.EndDate
FROM PS3_Vehicle v
LEFT JOIN PS3_VehicleBooking vb ON v.VehicleID = vb.VehicleID
WHERE vb.VehicleID IS NULL
SELECT v.DealerID, v.PS3_Vehicle.VehicleID, v.VehicleName, b.StartDate, b.EndDate
FROM PS3_Vehicle v
Left JOIN PS3_VehicleBooking b ON v.VehicleID = b.VehicleID
INNER JOIN PS3_Dealer d ON v.DealerID = d.DealerID
Where b.VehicleID is null
AND d.CommittedDate > GETDATE()
这将为您提供PS3\u VehicleBooking
中不存在的车辆,从而使startDate
和endDate
始终NULL
SELECT v.DealerID, v.PS3_Vehicle.VehicleID, v.VehicleName, b.StartDate, b.EndDate
FROM PS3_Vehicle v
Left JOIN PS3_VehicleBooking b ON v.VehicleID = b.VehicleID
INNER JOIN PS3_Dealer d ON v.DealerID = d.DealerID
Where b.VehicleID is null
AND d.CommittedDate > GETDATE()
将向您提供所有未售出的车辆,并告知未售出车辆的经销商
Ps当您开始执行这样的查询时,使用别名或表名完全限定您的所有名称,使下一个开发人员的工作更加容易
Oh和startdate以及enddate在这个查询中始终为空,因此它们是无意义的
SELECT D.DealerID, V.VehicleID, V.VehicleName, vb.StartDate, vb.EndDate
FROM PS3_Dealer D LEFT JOIN PS3_Vehicle V
ON D.DealerID = V.DealerID
LEFT JOIN PS3_VehicleBooking vb
ON V.VehicleID = VB.V.VehicleID
WHERE vb.V.VehicleID IS NULL
AND CommittedDate > GETDATE();
将向您提供所有未售出的车辆,并告知未售出车辆的经销商
Ps当您开始执行这样的查询时,使用别名或表名完全限定您的所有名称,使下一个开发人员的工作更加容易
Oh和startdate和enddate在此查询中将始终为空,因此是无意义的。您想要的输出是什么?在第一次内部联接中,您有!=在你的“开”条款里???此外,Select语句中DealerID的列名不明确,因为此列存在于多个同名表中DealerID的车辆id不存在于车辆预订表中,但我希望结果开始日期和结束日期列也不包含任何内容所需的输出是什么?在第一次内部联接中,您有!=在你的“开”条款里???Select语句中DealerID的列名也不明确,因为此列存在于多个同名表中。这些DealerID的车辆id不存在于车辆预订表中,但我希望结果开始日期和结束日期列也不包含任何内容
SELECT D.DealerID, V.VehicleID, V.VehicleName, vb.StartDate, vb.EndDate
FROM PS3_Dealer D LEFT JOIN PS3_Vehicle V
ON D.DealerID = V.DealerID
LEFT JOIN PS3_VehicleBooking vb
ON V.VehicleID = VB.V.VehicleID
WHERE vb.V.VehicleID IS NULL
AND CommittedDate > GETDATE();