相关子查询中的问题
问题描述:
在下面的查询中,我有两个表产品和产品状态在产品表中我有productid,productname和productstatus表中我有locationid,productid,currentstock,unitprice,statu.I想写一个相关的查询要获取产品名称,currentstock,locationid.i尝试,但它显示所有产品名称没有currentstock.I无法获得产品基于日期和locationid.Pls帮我做到这一点。相关子查询中的问题
相关子
SELECT p.ProductID,
p.ProductName,
(SELECT CurrentStock
FROM ProductStatus PS
WHERE PS.ProductID =p.ProductID
AND PS.LocationID = 1
AND PS.Statu = '2014-10-14')
FROM Product P
表结构和使用相关子查询数据
CREATE TABLE #Product
(productid INT,productname VARCHAR(100))
INSERT INTO #Product
VALUES (1,'biscuit'),
(2,'soap'),
(3,'flower')
CREATE TABLE #Productstatus
(
locationid INT,
productid INT,
currentstock INT,
unitprice INT,
statu DATE
)
INSERT INTO #Productstatus
VALUES (1,1,200,10,'2014-10-14'),
(1,2,300,10,'2014-11-16'),
(2,3,200,10,'2014-12-12')
答
。
SELECT p.ProductID,
p.ProductName,
(SELECT CurrentStock
FROM #Productstatus PS
WHERE PS.ProductID =p.ProductID
AND PS.LocationID = 1
AND PS.Statu = '2014-10-14'
and PS.productid=p.productid) CurrentStock
FROM #Product P
答
试着让我知道...也指定输出你想要的,所以它会很容易为你准备查询。
-- Data only with Stock
SELECT p.PRODUCTID, p.PRODUCTNAME, ps.LOCATIONID,ps.CURRENTSTOCK,ps.UNITPRICE
FROM
PRODUCT p INNER JOIN PRODUCTSTATUS ps
ON p.PRODUCTID = ps.PRODUCTID
WHERE ps.STAT ='2014-10-14'
-- Data with /without Stock
SELECT p.PRODUCTID, p.PRODUCTNAME, ps.LOCATIONID,ps.CURRENTSTOCK,ps.UNITPRICE
FROM
PRODUCT p LEFT JOIN PRODUCTSTATUS ps
ON p.PRODUCTID = ps.PRODUCTID
请不要使用内联子查询。 – Sebas 2014-10-29 17:42:59