2014-09-15 8 views
0

도와 주시면 감사하겠습니다. 여러 테이블을 포함하여 제품에 대한 키워드 검색을 수행하려고합니다. 하지만 모든 제품은 '다중 테이블이있는 MySQL 쿼리?

table 'product' 
id  product_name  description 
1  my product  this is my favorite product 
2  another item  that is another product 
3  blue car   for driving away 

table 'keywords' 
prod_id keywords 
2   car, product, blue 

그래서, 지금은 그'PRODUCT_NAME '에서'차 '를 가지고, 모든 제품을 얻기 위해'설명 '을 원하거나

예 ... 각 테이블에 항목이 키워드

그냥에만 두 테이블에 결과 해당 제품이하는 간단한 MySQL의 쿼리를 사용 :

SELECT A.id FROM product A, keywords B WHERE A.ID = B.product_id AND.... 

내가 노력 좌 가입 -하지만 그 결과로 세 제품 모두 있었다를 (아마도 내가 잘못 했어) :

SELECT A.id FROM product A LEFT JOIN keywords B ON A.id = B.prod_id AND (A.product_name LIKE '%car%' OR A.description LIKE '%car%' OR B.keywords LIKE '%car%') 

아무도 도와 줄 수 있습니까?

(select id from product where product_name LIKE '%car%' OR description LIKE '%car%') 
union 
(select prod_id from keywords where keywords LIKE '%car%'); 

답변

1

을 사용하는 것입니다 감사 & 관련 월

1

이는 노동 조합을 사용하여 수행 할 수 있습니다 .

SELECT `A.id` FROM product AS `A` 
LEFT OUTER JOIN keywords AS `B` ON `A.id` = `B.prod_id` 
WHERE (`A.product_name` LIKE '%car%' OR `A.description` LIKE '%car%' OR `B.keywords` LIKE '%car%') 

LIKE '%car%'도 더 좋을 수 That's my favorite cardigan.

RLIKE '[[:<:]]word[[:>:]]' 선택합니다 조심하십시오.


자료 : RLIKE에 대한

MySQL의 정규식 : http://dev.mysql.com/doc/refman/5.0/fr/regexp.html

2

가장 좋은 방법은 당신이 WHERE 대신 LEFT JOIN 명령에 AND를 넣어 조합을

select id from product where product_name LIKE '%car%' OR description LIKE '%car%' 
    union 
    select prod_id as id from keywords where keywords LIKE '%car%' ;