2013-08-08 4 views
0

이 검색어는 틈새 가격 비교 웹 사이트입니다.MySQL에 가격이없는 모든 제품 목록보기

두 개의 테이블이 있으며 첫 번째 테이블에는 제품 세부 정보가 나열되고 두 번째 테이블에는 제품과 관련된 모든 가격이 나열됩니다. 제품에는 하나 이상의 가격이있을 수 있습니다.

나는 관리를 위해 유효한 가격이없는 모든 제품을 나열하려고합니다.

가격 테이블에 가격 = 0 인 항목이있을 수 있습니다.이 경우 Prod_price_active는 "0"으로 설정됩니다. 제품이 가격을 가지고 있다면, Prod_price_active 모든 제품이 가격에 가정 "1"

표 1

Prod_id 
Prod_name 
Prod_description 

표 2

Price_id 
Prod_id 
Prod_price 
Prod_price_active 
+0

가능한 복제에 table2에 해당하는 항목 (이하 "가격 테이블") 또는을 가진 자 Prod_price_active 설정이없는 table1 (이하 "제품 표")/18136113/내부 조인 - 빈 결과 - 결과 - 오른쪽 테이블/18136209 # 18136209 – Wirus

답변

1

간단한 쿼리는 다음과 같습니다

select * from table1 
where not exists (
    select * from table2 
    where Prod_price_active = 1 
    and Prod_id = table1.Prod_id) 

이 문장의 SQL 버전입니다 당신이 찾고있는

+0

중첩 쿼리가 필요한 이유는 무엇입니까? 그것은 하나의 해결책 일지 모르지만 가능한 경우이를 피하는 것이 좋습니다. – ktm5124

+1

+1. . . 유일한 정답이기 때문입니다. 왼쪽 외부 조인으로 같은 것을 추가 할 가치가 없습니다. –

+0

@ ktm5124 수정 사항을 참조하십시오. 초보자는이 점을 더 잘 이해할 수 있습니다. 쿼리가 수백만 행의 트랜잭션 테이블을 통해 수행되는 경우이 방법을 권장하지 않지만 얼마나 많은 제품이있을 수 있습니까? – Bohemian

0

로 설정됩니다 테이블에서 inner join을 할 수 있습니다. 이해하기

select a.Prod_id, a.Prod_name, a.Prod_description 
from PRODUCTS a inner join PRICES b 
on a.Prod_id = b.Prod_id 
where b.Prod_price_active=0 
0

"나에게 적극적인 가격이없는 모든 제품을 제공" 에서

SELECT table1.* FROM table1 
       LEFT JOIN table2 USING(prod_id) 
       WHERE Prod_price IS NULL 
       OR Prod_price_active = 0 

이 계속됩니다 만 행 : 방법은 anti-join을 수행하기 위해 http://stackoverflow.com/questions으로 0

관련 문제