2010-02-14 3 views
1

두 개의 테이블에서 문자열을 찾고 있습니다.여러 테이블 검색에서 결과 테이블을 찾는 방법은 무엇입니까?

$sql="SELECT download.title FROM download 
     WHERE download.title LIKE '%$search%' 
     UNION 
     SELECT news.title FROM news 
     WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' "; 

내가 찾은 레코드가있는 테이블을 어떻게 확인할 수 있습니까?

+0

를 사용하는 대신 노동 조합을 사용하는 것보다 더 좋을 수 있지만 . – Marius

+0

@@ Identity가 정보를 제공 할 수 있는지 여부는 알지 못합니다. –

답변

3

결과 집합에 판별 자 열을 추가하지 않는 이유는 무엇입니까? 이를 통해 한 번 쿼리하고 소스별로 결과를 얻을 수 있습니다.

SELECT 'DOWNLOAD' AS SOURCE, download.title FROM download WHERE download.title LIKE '%$search%' 
UNION ALL 
SELECT 'NEWS', news.title FROM news WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%'; 
+2

+1이지만 첫 번째 열에 별칭을 추가 할 수 있습니다. –

+0

동의해야합니다 :) – Romain

+0

편집 된 SQL 및 모든 (UNION ALL) 추가 한 이유는 이론적으로 정렬 작업을 저장합니다 :) – Romain

0

가장 간단한 방법은 각 테이블에 대해 한 번씩 쿼리를 두 번 수행하는 것입니다. 그런 다음 어떤 결과가 발견되었는지를 알 수 있습니다. 함께 표시하고 정렬하려는 경우 두 결과 세트를 가져 와서 병합하여 표시 할 수 있습니다.

1

PHP에서는 mysql_field_table 기능을 사용할 수 있습니다.

+0

나는 여러 테이블에 대한 답변을 얻지 못한다. 테이블이 하나있을 때만! – max

1

당신은

예를 결정하기 위해 당신은 다음 사용할 수있는 소스를 나타 내기 위해 여분의 열을 추가 할 수 있습니다

$

sql="SELECT download.title, 'download' as source FROM download WHERE download.title LIKE '%$search%' 
UNION 
SELECT news.title 'news' as source FROM news, WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' "; 

이전 의견에 따라, 두 번 쿼리하는 각 테이블에 대해 한 번, 내가 두 번 쿼리 것 노동 조합

관련 문제