2013-11-01 3 views
0

특정 개체의 이름을 포함하는 테이블이 있습니다. 해당 열이 다음과 같다고 가정 해 보겠습니다. id, other_id, name.무료 검색에서 다른 테이블의 이름을 찾기위한 SQL 쿼리

또한 나는 "other_id"와 이전 테이블에 연결된 다른 테이블을 가지고 있으므로 해당 열은 다음과 같습니다. other_id, name.

WHERE `name` LIKE '%$search%'" 

을 그리고 그것은 잘 작동 :

는 내가 사용한 일반 검색에서 특정 개체를 찾을 수 있습니다.

그러나 두 번째 테이블의 이름도 검색하고 싶습니다.

그래서 기본적으로 두 테이블과 그 테이블을 연결하는 ID가 있으며 "검색"또는 해당 특정 행에 연결된 두 번째 테이블 행과 같은 이름의 첫 번째 테이블 행을 가져올 수 있기를 원합니다. 첫 번째 테이블에서 이름은 "검색"과 같습니다.

아이디어가 있으십니까?

답변

1

테이블을 연결하는 ID로 테이블을 가입시킬 수 있습니다. 그런 다음 지정한 기준에 따라 원하는 열을 선택할 수 있습니다.

CREATE TABLE #TEST 
(COL1 INT, 
COL2 NVARCHAR(5)) 

CREATE TABLE #TEST2 
(COL1 INT, 
COL2 NVARCHAR(5)) 

INSERT INTO #TEST 
VALUES ('1', 'BILL'), ('2', 'NANCY') 

INSERT INTO #TEST2 
VALUES ('1', 'RED'), ('2', 'BLUE') 


SELECT A.COL2 
     ,B.COL2 
FROM #TEST A 
JOIN #TEST2 B 
ON A.COL1 = B.COL1 
WHERE A.COL2 LIKE '%BILL%' 

이 예제에서는 table1.column1이 '% Bill %'인 두 테이블 모두에서 열 2를 선택합니다.

+0

이것은 효과가 있습니다. 그래도 나는 열 이름을 줄 필요가 있었고 서로 이름이 다를 수있다. –

0

당신은 두 테이블의 결과는 당신이 할 수 원하는 경우에만 other_id대로

SELECT id,other_id,name FROM TABLE1 
WHERE `name` LIKE '%$search%' 
UNION 
SELECT null,other_id,name FROM TABLE2 
WHERE `name` LIKE '%$search%' 

, 두 번째 테이블의 이름을, 노조는 두 번째 테이블의 결과에 대한 ID로 null을해야합니다.

+0

이것은 내가 원하는 것이 아닙니다. 이름이 검색과 같거나 그 행에 연결된 두 번째 테이블의 이름이 검색과 같은 첫 번째 테이블의 행만 원했습니다. 귀하의 검색어는 검색과 같은 이름을 가진 첫 번째 및 두 번째 표의 모든 행을 제공합니다. –

관련 문제