2012-04-03 4 views
1

형제의 이름을 찾기 위해 내 데이터베이스에 대한 검색 기능을 설정했습니다. 형제가 둘 이상의 열에 나열된다는 점에서 문제가 발생했습니다. OR을 사용하여 데이터베이스에서 3 개 이상의 열을 조사 할 수 있는지 궁금합니다. 1 열 이상 검색

내가 지금 가지고있는 것입니다

SELECT * FROM movie WHERE $dropdown_1 LIKE '%$search%'" 

dropdown_1가 형제 자매를 포함하여 여러 가지 일 수 있지만 나는 형제가 dropdown_1 선택한 경우 있는지 확인하는 것이, siblings_1에서 siblings_2, siblings_3siblings_4을 볼 것이다 싶습니다 이름이 일치합니다.

답변

3

아마도 데이터베이스가 Normalizing이라고 생각할 때입니다.

WHERE siblings_1 LIKE '%search%' UNION SELECT ... WHERE siblings_2 LIKE '%search%' # etc ... 

하지만 주장 : OMGPonnies 아래의 코멘트에 지적

직접 UNION가 빠르고 사용,

`siblings_1` LIKE '%search%' OR `siblings_2` LIKE '%search%' # etc... 

또는 여러 일치하는 OR을 사용할 수 있습니다, 귀하의 질문에 대답하려면 , 당신이 여전히 그것을 도울 수 있다면, 당신의 데이터베이스를 재 설계하십시오 :).

+0

+1 같다 : 차라리 OR''보다는'UNION'를 사용하지만 달리 합의 것입니다. –

+0

@OMGPonies 저에게 감사드립니다. 궁금합니다. 어떻게 'UNION'을 사용하여 다시 작성하겠습니까? :) –

+0

'WHERE 'siblings_1 LIKE'% search % 'UNION SELECT ... WHERE'siblings_2 LIKE '% search %'... ' –

1

사용자 정의 변수에 열 이름을 넣는 것은 좋지 않은 생각입니다. 그러면 테이블의 아무 곳이나 검색 할 수 있습니다.

은 당신이 아마 필요한 것은 더

SELECT * FROM movie WHERE `dropdown_column` LIKE '%$search%'" OR `sibling_column` LIKE '%$search%'" etc..