2012-04-20 3 views
0

두 테이블에서 데이터를 가져 오려고하지만 기준과 일치하는 모든 레코드를 가져 오지 않는 것 같습니다. 나는 이유는, 따라서,SQL 쿼리가 모든 것을 가져 오지 않습니다

SELECT Parts."Part Number",Parts."Description",Parts."Location",Parts."Qty In Stock",Parts."LastCost",Parts."Cost Price",Parts."Retail Price",Transact."Type" 
FROM Transact 
INNER JOIN Parts 
ON Transact."PartNumber"=Parts."Part Number" 
WHERE Transact.Type = 'Non-stock Purch' 

내가 부품 데이터베이스에서 해당 부분의 설명을 반대 '재고 없음 PURCH'를 가지고 모든 레코드를 당기고 당겨하려고 해요 :

내 쿼리입니다 '설명', '비용', '마지막 비용'등을 포함했다

내가 실행하는 경우는, 필요한 모든 정보를 가져 오지 않을거야 의미 쿼리에 뭔가 잘못하고 있습니까 :

select * from transact x 
where x.Type = 'Non-stock Purch' 
order by x.PartNumber 

이것은 268 개의 레코드를 반환합니다. 이전 쿼리 이 같은 번호를 반환하지만 실제로는 111을 반환합니다. 다른 테이블 내에 존재한다는 것을 알고 있습니다.

또한이 쿼리를 잘못 작성하고 있거나 서식이 올바르지 않은 경우 알려주십시오.

감사합니다.

+0

'LEFT JOIN'을 시도하고 268 개의 레코드가 다시 생성되는지 확인하십시오. 그렇다면 실제로 다른 테이블의 모든 거래에 대해 일치하는 레코드가 없습니다. – mellamokb

+0

데이터가 Parts 테이블에도 있음을 이미 확인했는데 INNER JOIN 대신 LEFT JOIN을 사용했다면 어떻게 될까요? 예상되는 행 수를 반환합니까? – Tuan

답변

2

부품 테이블에 Transact 테이블의 레코드와 일치하는 레코드가 없을 수 있습니다. 당신은 INNER JOIN을하고 있습니다; 부품에 Transact의 레코드에 나타나는 부품 번호가있는 레코드가 없으면 행이 반환되지 않습니다.

모든 레코드를 Transact에 저장하고 Part의 데이터가 존재하는 경우 LEFT JOIN을 수행 할 수 있습니다. 결과가 일치하지 않으면 Parts의 모든 열이 null이됩니다.

0

귀하의 테이블에 Transact 테이블의 레코드에 대한 일치하는 레코드가 없을 수도 있습니다.

관련 문제