[CARRIER表]
Carrier_ID Name Gender Birthday
2001 Aylin Female 29.03.1975
2002 Arif Male 29.09.1996
2003 Berker Male 13.11.1970
2004 Sezgin Male 13.06.1988
2005 Yeliz Female 11.08.1951
2006 Dolunay Male 17.07.1974
2007 Reşide Female 10.01.1960
2008 Münir Male 27.06.1989
[订购表]
Order_ID描述价格Carrier_ID
1001 24” Monitor 199 2001
1002 Cloths 45 2003
1003 Vaporizer 24 2006
1004 Book 19 2002
1005 Graphics Card 450 2003
1006 Shoes 37 2007
1007 Bag 14 2008
1008 Processor 299 2008
答案 0 :(得分:0)
尝试将这些内容与您在帖子中提供的一些信息以及您留下的评论中放在一起......看来您有两个表Carrier
和Order
。首先,我确实在Order
表中看到,您有Description
个“鞋子”的条目。我希望,你会有一个查找表,其中包含每个产品/订单类型的条目,但是到目前为止,我们提供给你的东西,不太理想的方法是:
关于你的第一个问题:
列出订购“鞋子”的接收者的生日
select c.Birthday
from Carrier c
join Order o
on o.Carrier_ID = c.Carrier_ID
where o.Description = 'Shoes';
理想情况下,您应该拥有一个包含唯一标识符和产品说明的产品/订单类型的查找表。然后,您应该将唯一标识符存储在订单表中而不是描述中。然后,您将加入产品查找表以获取有关该产品的信息。
使用新提供的信息,这里可能是一个更好的查询,它与第一个相同,但更恰当的是:
select c.Birthday
from Carrier c
join Order o
on o.Carrier_ID = c.Carrier_ID
where o.Order_ID = 1006;
关于你问题的第二部分:
列出提供最低价格和最高价格订单的承运商名称。
with MinPrice_CTE (MinPrice)
as
(
select Min(Price) as MinPrice
from Orders
),
MaxPrice_CTE (MaxPrice)
as
(
select Max(Price) as MaxPrice
from Orders
)
select c.Name,
case when o.Price = MinPrice then 'Minimum Price'
else 'Maximum Price' end as PriceGroup
from Carriers c
join Orders o
on o.Carrier_ID = c.Carrier_ID
where o.Price in (MinPrice, MaxPrice);