2017-03-03 67 views
-1

我想在MSSQL(SSMS)中创建一个选择。 我有2个表:SQL SELECT 2表包含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 

只想尚未售出工会水果。

回答

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 
+0

非常感谢您的兄弟!你真棒 – Adamszsz

-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

+0

是否有任何特定的投票原因? –