包含2列

时间:2017-03-03 09:42:13

标签: sql sql-server union

我想在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  

只想结合尚未售出的水果。

2 个答案:

答案 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

您可以从下面提到的链接获取有关各种联接的更多详细信息。

https://msdn.microsoft.com/en-us/library/zt8wzxy4.aspx