2014-10-29 87 views
0

在下面的查询中,我有两个表产品和产品状态在产品表中我有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') 
+0

请不要使用内联子查询。 – Sebas 2014-10-29 17:42:59

回答

0

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

它不工作它displys所有产品没有currentstock.Where条件不起作用 – Developer 2014-10-29 17:20:49

+0

@Developer - 尝试新的代码 – 2014-10-29 17:22:43

+0

它不工作第二个查询也 – Developer 2014-10-29 17:22:55

0

试着让我知道...也指定输出你想要的,所以它会很容易为你准备查询。

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