这是我第一次在论坛上发布,因为我以前从未走过这条路线,试图确定我到底缺少什么。
这就是我要做的:编写一个SQL查询,以显示每个学生可以去的所有餐厅,并至少有一个他们喜欢的甜点。即,如果一家餐厅有这个人喜欢的甜点,那么该人可以去那家餐厅。这就是我到目前为止数据库(表,字段,复合表等)的所示:
create table Student
(
StudentID int primary key not null
, LastName nvarchar (20) not null
, FirstName nvarchar (20) not null
)
create table Dessert
(
DessertID int primary key not null
, DessertName nvarchar (25) not null
)
create table Restaurant
(
RestaurantID int primary key not null
, RestaurantName nvarchar (20) not null
, RestaurantStreet nvarchar (20) not null
, RestaurantCity nvarchar (20) not null
, RestaurantState nvarchar (2) not null
, RestaurantZipCode nvarchar (5) not null
)
create table StudentDessert
(
StudentID int
, DessertID int
, primary key (StudentID, DessertID)
, foreign key (StudentID) references Student(StudentID)
, foreign key (DessertID) references Dessert(DessertID)
)
create table RestaurantDessert
(
RestaurantID int
, DessertID int
, primary key (RestaurantID,DessertID)
, foreign key (restaurantID)references Restaurant(RestaurantID)
, foreign key (DessertID) references Dessert(DessertID)
)
这可能是我最接近的一个,但仍然产生太多数据:
select restaurantname, studentID, dessertid
from restaurant, studentdessert
where dessertid != 0
您可以帮助完善此查询吗?
这确实取决于您希望结果的外观,但是这是一个简单的查询,可以使您朝正确的方向前进:
SELECT DISTINCT
s.FirstName + ' ' + s.LastName AS 'StudentName'
,r.RestaurantName
FROM Student s
INNER JOIN StudentDessert sd ON sd.StudentID = s.StudentID
INNER JOIN dessert de ON de.DessertID = sd.DessertID
INNER JOIN RestaurantDessert rd ON rd.DessertID = sd.DessertID
INNER JOIN Restaurant r ON r.RestaurantID = rd.RestaurantID