2014-10-29 89 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