【发布时间】:2021-08-20 11:09:20
【问题描述】:
我有两张桌子,“Booking”和“City”。 CityName 字段是 City 表中的主键,我已将其用作 Booking 表中“SourceCity”和“DestinationCity”两列的外键。我想创建一个存储过程来从 Booking 表中选择所有现有数据以创建视图列表,为此我编写了以下内容。
SELECT [dbo].[Booking].[BookingID],
[dbo].[Booking].[CustomerName],
[dbo].[City].[CityName],
[dbo].[City].[CityName],
[dbo].[Booking].[StartingDate],
[dbo].[Booking].[EndingDate],
[dbo].[Car].[LicensePlateNumber],
[dbo].[Driver].[DriverName],
[dbo].[Booking].[AdvanceTaken],
[dbo].[Booking].[PendingPayment],
[dbo].[Booking].[TotalRent],
[dbo].[Booking].[BookingDate],
[dbo].[Booking].[IDProof]
FROM [dbo].[Booking]
**LEFT OUTER JOIN [dbo].[City]
ON [dbo].[Booking].[SourceCity] = [dbo].[City].[CityName]
AND [dbo].[Booking].[DestinationCity] = [dbo].[City].[CityName]**
LEFT OUTER JOIN [dbo].[Driver]
ON [dbo].[Driver].[DriverID] = [dbo].[Booking].[DriverAllotted]
LEFT OUTER JOIN [dbo].[Car]
ON [dbo].[Car].[CarID] = [dbo].[Booking].[CarAllotted]
ORDER BY [dbo].[Booking].[BookingID]
我不确定是否可以执行以下操作
LEFT OUTER JOIN [dbo].[City]
ON [dbo].[Booking].[SourceCity] = [dbo].[City].[CityName]
AND [dbo].[Booking].[DestinationCity] = [dbo].[City].[CityName]
【问题讨论】:
-
我不确定是否可以执行以下操作 - 那么当您尝试时发生了什么?
-
您可能需要阅读使用表aliases。它不仅可以毫无歧义地重复使用同一个表,还可以使您的 SQL 更具可读性
-
仅供参考3+ part naming on Columns will be Deprecated,如@GarethD 所说,坚持使用别名。它不仅能让你的代码更简洁,还能让你的代码正常工作。
标签: sql sql-server sql-server-2008