3 개의 테이블을 결합하여 잘못된 결과를 얻고 있습니다. 목표는 레스토랑 테이블에있는 모든 레스토랑을 나열하고 등급이있는 경우 레스토랑의 등급을 표시하는 것입니다. 그렇지 않으면 null을 표시하고 버거의 등급에 대해서만 표시합니다. 난 단지 표시 할 때문에 SQL 조인에 도움이 필요합니다.
그러나 '카페 C'는 평가 = 널 (null)이 있어야합니다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'
이
는 결과입니다이
은 SQL입니다 Burgers에 대한 평가. 적절한 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 for SQL DDL :) 그러나 SQL DML의 샘플 데이터가 사용자의 그림과 일치하지 않는 것 같습니다. – onedaywhen
@onedaywhen 테이블을 다시 만들고 쿼리를 실행하면 동일한 결과가 나타납니다. 어쩌면 당신은 더 설명 할 수 있습니다. –