【发布时间】:2019-02-19 15:25:18
【问题描述】:
我正在尝试使用 Where-In 子句从不同表的列中检索数据,但无法这样做。要求的任务是:“列出所有过期产品的名称、包装重量、生产单位和批号”
数据库是这样的
create table Products(
ProductId int,
ProductName varchar(20) not null,
PackageWeight float not null,
PricePerUnit int not null,
AmountInStore int,
Primary Key(ProductId)
)
insert into Products values(1, 'Chicken Cutlet', 0.5, 500, 600)
insert into Products values(2, 'Chicken Cutlet', 0.25, 250, 0)
insert into Products values(3, 'Chicken Cutlet', 1, 1000, 500)
insert into Products values(4, 'Chicken Cutlet', 5, 4500, 600)
insert into Products values(5, 'Chicken Tenders', 300, 500, 500)
insert into Products values(6, 'Chicken Tenders', 600, 500, 100)
insert into Products values(7, 'Potato Fries', 1, 150, 0)
insert into Products values(8, 'Potato Fries', 5, 750, 800)
create table Production(
ProductId int,
BatchNo char(6) ,
UnitsProduced int not null,
DateOfProduction date not null,
ExpiryDate date not null,
Foreign Key(ProductId) references Products(ProductId),
Primary Key(ProductId, BatchNo)
)
insert into Production values(1, '1-1001', 1000, '2014-01-01', '2014-01-10')
insert into Production values(2, '1-1001', 1000, '2014-01-01', '2014-01-10')
insert into Production values(3, '1-1001', 1000, '2014-02-01', '2014-02-10')
insert into Production values(4, '1-2001', 500, '2014-05-01', '2014-10-30')
insert into Production values(5, '1-2001', 500, '2014-05-10', '2030-11-10')
到目前为止,我有这个:
select ProductName, PackageWeight from Products where ProductId in(
select ProductId from Products
Intersect
select ProductId from Production where ExpiryDate < GETDATE())
我得到了正确的产品名称和包装重量,因为它们都来自同一个表,即产品,但我如何才能从不同的表中检索 BatchNo、UnitsProduced,即同一查询中的生产?
【问题讨论】:
-
预期输出?
标签: sql-server