2012-08-08 2 views
0

제 문제는 현재 작업하고있는 웹 사이트에 제품 테이블이 두 개 있고 테이블 중 하나만 검색하는 검색 기능이 있다는 것입니다. 두 테이블을 모두 다루기 위해 웹 사이트의 검색 페이지를 확장하고 싶습니다.두 개의 독점적 인 테이블에서 결과 집합을 결합하는 SELECT

실제로 결과 쿼리에 참여하는 두 개의 쿼리가 필요하므로 PHP를 사용하여 사용자의 검색 쿼리와의 관련성을 계산할 수 있습니다.

mysql_query("SELECT * FROM product WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'") 

title

content 같이, 물론 product_spray 테이블에있는 필드이다. product 테이블과 product_spray 테이블의 결과를 포함하도록 위의 쿼리를 수정하려면 어떻게해야합니까?

두 테이블간에 링크가 없기 때문에 내가 필요한 JOIN이라는 것이 확실하지 않습니다. 서로 독점적입니다. 하지만, MySQL에 대해서는 경험이별로 없기 때문에 제가 누락 된 것이 있다면 알려주십시오.

나는이 시도했다 :

mysql_query("SELECT * FROM product, product_spray WHERE product.title LIKE '%$keyword%' OR product.content LIKE '%$keyword%' OR product_spray.title LIKE '%$keyword%' OR product_spray.content LIKE '%$keyword%'") 

결과 집합이 제대로 나오지 않는, 그 결과를 결합하는 것 같다.

필자가 필요로하는 것은 단일 쿼리를 사용하지만 두 개의 독점적 인 SELECT 문을 사용하는 것입니다. 이 작업을 수행 할 수 있습니까?

나는 심지어 PHP에서 두 개의 쿼리 결과 집합을 결합 할 수있는 무언가를하고 있습니다.

+0

두 테이블이 연결되어 있지 않으면 UNION을 시도하십시오. 하지만 필드 수가 모두 같아야하므로 필드 수가 다르거 나 향후 변경 될 경우 SELECT *가 작동하지 않을 수도 있습니다. – Waygood

답변

2

행에 가입하고 싶습니다 (오른쪽 열이 아님?). 그리고 당신의 문제를 해결하기 위해, 당신은 단지 두 쿼리 결과 집합에서 동일한 열이 있는지 확인이

SELECT columnA 
FROM product 
WHERE title LIKE '%$keyword%' OR 
     content LIKE '%$keyword%' 
UNION 
SELECT columnA 
FROM product_spray 
WHERE title LIKE '%$keyword%' OR 
     content LIKE '%$keyword%' 

에 대한 UNION을 사용합니다.

+0

감사합니다. –

+0

당신은 대니얼입니다 :) –

0
mysq_query("SELECT A.*,B.* FROM 
product as A 
left join product_spray as B ON B.title LIKE '%$keyword%' = A.title LIKE '%$keyword%' 
WHERE B.content LIKE '%$keyword%' OR B.content LIKE '%$keyword%'") 
AND don't A.* this sol - select A.title , A.content from xxx 
+0

테이블은 서로 관계가 없습니다 –

관련 문제