我連接3個表格並得到錯誤的結果。我們的目標是列出餐館表中的所有餐館,並顯示任何餐廳的評級,如果評級存在,則顯示空白,僅顯示漢堡評級。在SQL連接中需要幫助
這是SQL:
SELECT r.RestaurantID, RestaurantName, cr.Rating FROM Restaurant r
LEFT JOIN CustRating cr ON cr.RestaurantID = r.RestaurantID
LEFT JOIN FoodType ft ON ft.FoodTypeID = cr.FoodTypeID AND
ft.FoodTypeName = 'Burger'
這是結果:
但是 '咖啡館C' 應該有等級= null,因爲我只想顯示伯格斯評分。什麼是適當的SQL?
的SQL語句來創建表和用數據填充:
CREATE TABLE [dbo].[Restaurant](
[RestaurantID] [int] NOT NULL,
[RestaurantName] [varchar](250) NOT NULL
)
CREATE TABLE [dbo].[FoodType](
[FoodTypeID] [int] NOT NULL,
[FoodTypeName] [varchar](50) NOT NULL
)
CREATE TABLE [dbo].[CustRating](
[RestaurantID] [int] NOT NULL,
[FoodTypeID] [int] NOT NULL,
[Rating] [smallint] NOT NULL
)
BEGIN TRANSACTION;
INSERT INTO [dbo].[CustRating]([RestaurantID], [FoodTypeID], [Rating])
SELECT 2, 1, 3 UNION ALL
SELECT 3, 2, 2
COMMIT;
GO
BEGIN TRANSACTION;
INSERT INTO [dbo].[FoodType]([FoodTypeID], [FoodTypeName])
SELECT 1, N'Burger' UNION ALL
SELECT 2, N'Taco'
COMMIT;
GO
BEGIN TRANSACTION;
INSERT INTO [dbo].[Restaurant]([RestaurantID], [RestaurantName])
SELECT 1, N'Cafe A' UNION ALL
SELECT 2, N'Cafe B' UNION ALL
SELECT 3, N'Cafe C'
COMMIT;
GO
+1 SQL DDL :)但您的SQL DML中的示例數據似乎不匹配您的圖片。 – onedaywhen 2012-01-05 08:45:10
@onedaywhen我重新創建表並運行查詢,我得到相同的結果。也許你可以進一步解釋。 – 2012-01-05 16:58:06