我有三个表:switch lower(opts.color)
case {'rgb', 'opponent'}
...
end
,Clinic
和Stock
。
我需要获取所有行StockLog
。我还需要显示订单是否已下达以及订单数量是多少;可在表where Stock.stock < 5
中找到。
问题是,用户可以在Stocklog
表格中设置自己的库存水平,而无需下达Stock
的订单。
我需要一个查询,可以:返回Stocklog
表中的行,并获取Stock
表中的相关订单金额。如果Stocklog
中没有下订单,则将金额设置为零金额。
我试过了:
StockLog
我的查询问题是我丢失了SELECT
Clinic.Name,
Stock.NameOfMedication, Stock.Stock,
StockLog.OrderAmount
FROM
Clinic
JOIN
Stock ON Stock.ClinicID = Clinic.ClinicID
JOIN
StockLog ON StockLog.StockID = Stock.StockID
WHERE
Stock.Stock <= 5
中找不到的行。
有关如何撰写本文的任何帮助。
谢谢。
答案 0 :(得分:0)
如果要保留加入Clinic和Stock所产生的所有行,请使用带有StockLog的LEFT OUTER JOIN
。我不知道你使用的是哪个SQL(SQL Server,MySQL,PostgreSQL,Oracle),所以我不能给你一个确切的例子,但是在相关文档中搜索“left outer join”应该可行。
有关各种连接的说明,请参阅this Stack Overflow post。
答案 1 :(得分:0)
我认为查询应该如下所示:
SELECT c.Name, s.NameOfMedication, s.Stock,
COALESCE(sl.OrderAmount, 0) as OrderAmount
FROM Stock s LEFT JOIN
Clinic c
ON s.ClinicID = c.ClinicID LEFT JOIN
StockLog sl
ON sl.StockID = s.StockID
WHERE s.Stock <= 5 ;
您希望将所有行保留在Stock
中(受WHERE
条件限制)。因此,请考虑:&#34;将Stock
作为FROM
中的第一个表格,并将LEFT JOIN
用于所有其他表格。&#34;