我想在MSSQL(SSMS)中创建一个select。 我有2张桌子:
售罄物业:
CREATE TABLE [dbo].[Solds](
[Short] [nchar](10) NOT NULL,
[Id_Sold] [int] NULL,
[Price] [float] NULL,
[Date] [date] NULL,
水果:
CREATE TABLE [dbo].[Fruits](
[Short] [nchar](10) NOT NULL,
[Name] [nchar](10) NULL,
现在我想选择水果和价格的所有名称,包括没有价格的水果。
我写了这个:
SELECT Name.Fruits,Solds.Price FROM Solds
join
Fruits on Fruits.Short = Solds.Short
此代码仅显示所有已售出的水果, 问题是我如何在这里添加尚未售出的水果名称?
我想要输出例如:
Carrot 1,20
Cucumber 2,80
Carrot 9,20
Orange NULL -- NULL or Blank
只想结合尚未售出的水果。
答案 0 :(得分:1)
使用LEFT JOIN
:
SELECT f.Name,
COALESCE(s.Price, -1.0) AS Price
-- include the following if you want a label for sold/unsold
-- CASE WHEN s.Price IS NOT NULL THEN 'Sold' ELSE 'Not Sold' END AS status
FROM Fruits f
LEFT JOIN Solds s
ON f.Short = s.Short
答案 1 :(得分:-1)
使用LEFT OUTER JOIN:
SELECT f.Name,
isnull(s.Price, 0) AS Price
FROM Fruits f
LEFT OUTER JOIN Solds s
ON f.Short = s.Short
您可以从下面提到的链接获取有关各种联接的更多详细信息。