2012-04-28 2 views
0

난 구조 세 테이블 저는 여기여러 개의 선택 쿼리를 하나로 결합하는 방법은 무엇입니까?

SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx' 

로 Product_property & categories_id에 대하여에 refrence 테이블 Product_reference 값을 추출하고

CREATE TABLE IF NOT EXISTS `refrence` (
    `products_ref_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `categories_id` int(11) NOT NULL, 
    `Product_property` varchar(255) NOT NULL, 
    `Product_reference` varchar(50) NOT NULL, 
    PRIMARY KEY (`products_ref_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; 


CREATE TABLE IF NOT EXISTS `product_details` (
    `products_id` int(11) NOT NULL AUTO_INCREMENT, 
    `categories_id` int(11) NOT NULL, 
    `FieldA` varchar(30) NOT NULL, 
    `FieldB` varchar(50) NOT NULL, 
    `FieldC` varchar(255) NOT NULL, 
    `FieldD` varchar(255) NOT NULL, 
    `FieldE` varchar(255) NOT NULL, 
    `FieldF` varchar(255) NOT NULL, 
    `Field_desc` text NOT NULL, 
    PRIMARY KEY (`products_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=98 ; 

지금이 Product_reference가 product_details 테이블한다고 가정 결과의 필드 이름이 abc입니다. 그래서 내가

SELECT Distinct abc FROM product_details where categories_id=3 

지금 내가 하나에 쿼리를 모두 결합 원하는 product_details 테이블에서 별개의 ABC를 추출 할, 하나 하나에 이러한 쿼리를 작성하는 방법은 무엇입니까.

나는이

SELECT Distinct (
SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx' 
) as aa FROM product_details where categories_id=3 

하지만 그 작동하지 않는, 수 있습니다 내가 몇 가지 구문을 놓치고을 시도했다. Eggyal에 의해 지적,이 때문에 항상 CATEGORY_ID =의 불가능 상태로 아무 것도 반환하지 않습니다

SELECT r.product_reference 
FROM refrence AS r 
LEFT JOIN categories AS c ON (c.categories_id = r.categories_id AND r.categories_id=3 AND  r.product_property='zzz') 
WHERE c.categories_id=1 

: 당신이 이러한 목표를 달성하기 위해 노력하고 있음을 나타납니다 작동하지 않는 것을 모른 채

+1

"비트가 작동하지 않음"- 좀 더 구체적으로 표현할 수 있습니까? 오류가 무엇입니까? –

+0

categories_id는 모든 테이블에서 동일합니다 .... 외래 키로 사용하고 있습니까? –

+0

당신의 질의를 보니,'categories_id = 3' 레코드 인'refrence'를 왜,'categories_id = 1' 레코드의'product_details'를 검색하는지, 그리고 당신의 질의를 의도 한 내용에 대한 설명은 분명하지 않습니다. do는 이해하기가 매우 어렵습니다. 아마도 당신은 분명히 할 수 있을까요? – eggyal

답변

1

1 AND category_id = 3이므로 다음 중 하나를 사용하십시오. 둘 다 1이어야합니다. 둘 다 3이어야합니다. 또는 서로 관련이 없거나 이름이 같은 완전히 다른 "카테고리"입니다.

+1

이것은 ** 테이블에 조인 된'categories_id'에있는 충돌하는 필터 때문에 빈 레코드 세트를 반환합니다 ** 항상 **입니다. – eggyal

+0

죄송합니다 ... 충분한 데이터를 보지 않고도 내 편집기에서 너무 빨리 잘라내거나 붙여 넣을 수 있습니다. – GDP

관련 문제