我有表客户:
Id Code Name
1 100 John
2 200 Jack
3 300 Mike
4 400 Betty
表 SaleType :
Id Code Name
1 1000 cash
2 2000 cheque
3 3000 free
一张表格,描述哪个客户的销售类型名为 SaleType_Customer
Id SaleTypeID CustomerID
1 1 1
2 1 2
3 2 1
4 2 3
我想编写一个采用客户的 SaleTypes 的查询。但是,如果客户不在表 SaleType_Customer 中,则查询将返回所有 SaleTypes 。我该如何撰写此查询?
我的查询:
SELECT SaleType.ID, SaleType.Code, SaleType.Name
FROM SaleType left outer join SaleType_Customer on SaleType.Id = SaleType_Customer.SaleTypeID
Where SaleType_Customer.CustomerID= 1
我想要John的结果(id = 1):
Id Code Name
1 1000 cash
2 2000 cheque
对于Betty(id = 4)已经完成,因为她不在 SaleType_Customer :
Id Code Name
1 1000 cash
2 2000 cheque
3 3000 free
我该如何撰写查询?
答案 0 :(得分:1)
SELECT SaleType.ID, SaleType.Code, SaleType.Name
FROM SaleType
WHERE NOT EXISTS (SELECT *
FROM SaleType_Customer
WHERE SaleType_Customer.Customerid = 4)
UNION
SELECT SaleType.ID, SaleType.Code, SaleType.Name
FROM SaleType
INNER JOIN SaleType_Customer
ON SaleType_Customer.Saletypeid = SaleType.Id
WHERE SaleType_Customer.Customerid = 4
答案 1 :(得分:1)
SELECT distinct SaleType.ID, SaleType.Code, SaleType.Name
FROM Customer left join SaleType_Customer
on CustomerID = Customer.Id
,SaleType
where (SaleTypeID = SaleType.Id or SaleTypeID is NULL)
and Customer.ID= 4;
以下是SQLFiddle