2012-04-07 6 views
1

누군가가 다음을 도울 수 있기를 바랍니다. 사용자 별 검색 기능을 만들려고합니다. 누군가가 로그인하면 customer_ref 또는 order_details 열의 결과를 반환하는 검색을 실행할 수 있습니다.세 개의 열을 검색하십시오.

다음을 시도했지만 다른 고객의 결과를 반환합니다.

SELECT * 
FROM `job` 
WHERE c_name = 'John Doe' 
AND customer_ref LIKE '%do%' 
OR order_details LIKE '%do%' 

결과를 특정 고객에게만 공개하고 싶습니다 (분명한 이유로). 최종선 (OR order_details LIKE '%do%')을 제거하면 결과가 고객에게 올바르게 고정되지만, 그곳에있을 때 다른 고객 이름을 포함한 결과가 표시됩니다.

%do%은 문 또는 Doreen (테스트 용)을 나타내는 와일드 카드 검색어입니다. 실제 코드에서는 검색 상자에 입력 한 값이됩니다.

미리 감사드립니다. 당신이 찾고있는 무슨 용어

답변

2

당신은에 명확히 쿼리에 괄호를 포함해야합니다

SELECT * 
FROM `job` 
WHERE c_name = 'John doe' 
AND (customer_ref LIKE '%do%' 
OR order_details LIKE '%do%') 
+0

많은 감사, 매력을 작동합니다 :) – wiggy1977

+1

@ wiggy1977 - Fyi는 AND와 OR 연산자를 사용하여 모호함을 만듭니다. 괄호는 조건을 처리하는 방법을 데이터베이스에 알려줍니다. 그렇지 않으면 데이터베이스가 원하는 규칙 일 수도 있고 아닐 수도있는 자체 규칙을 적용합니다. 이 기사에 관심이있을 수 있습니다 : [운영자 우선 순위가 MySQL SELECT 쿼리에 미치는 영향] (http://www.databasejournal.com/features/mysql/article.php/3904221/How-Operator-Precedence-Affects-) MySQL - -SELECT-Queries.htm – Leigh

0

예를 들어 CONCAT를 사용해보십시오 :

SELECT * 
FROM job 
WHERE job.c_name = 'John doe' AND 
(job.customer_ref LIKE CONCAT '%do' 
OR job.order_details LIKE CONCAT '%do') 
+0

연결을 사용하면 어떤 이점이 있습니까? – wiggy1977

+0

예 : 검색 창에 입력 한 값이 데이터베이스의 두 열 (예 : ** door Doreen **) 인 경우 예. 이 질문에 사용의 예 http://stackoverflow.com/questions/4005251/select-from-tbl-where-clm-like-concat-other-sql-query-limit-1-how – mykey

관련 문제