2014-10-29 2 views
0

아래의 쿼리에서 productid, productname 및 productstatus 테이블에 productid, productid, currentstock, unitprice, statu.y가있는 제품 테이블에 2 개의 테이블 제품 및 제품 상태가 있습니다. 상관 쿼리를 작성하고 싶습니다. productname, currentstock, locationid.i를 얻으려고했는데 currentstock이없는 모든 제품 이름을 표시합니다. 날짜와 locationid를 기반으로 제품을 가져올 수 없습니다. 이렇게하면 도움이됩니다.상관 서브 쿼리의 문제

상관 부질

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

답변

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

현재 작동하지 않는 모든 제품이 작동하지 않습니다. 조건이 작동하지 않습니다. – Developer

+0

@ 개발자 - 새 코드를 시도하십시오. –

+0

두 번째 쿼리도 작동하지 않습니다. – Developer

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