2014-07-15 4 views
0

내가 작업중인 웹 시스템에서 검색을 만드는 중입니다. 검색 쿼리는 내가 필요한 데이터를 찾는 측면에서 매우 간단합니다 (그리고 이것이 가능한지 확실하지 않습니다). 을 알고 싶습니다. 데이터가 일치합니다.검색 기준과 일치하는 열 확인

SELECT o.*, c.`customer_name` 
FROM `orders` o 
    LEFT JOIN `customers` c ON (o.`customerID` = c.`customerID`) 
WHERE ((o.`orderID` like '%adam%') OR 
    (o.`order_ref` like '%adam%') OR 
    (c.`customer_name` like '%adam%') OR 
    (c.`address_line1` like '%adam%') OR 
    (c.`address_line2` like '%adam%') OR 
    (c.`town` like '%adam%') OR 
    (c.`city` like '%adam%') OR 
    (c.`postcode` like '%adam%')) 

위의 쿼리에서 고객 이름은 일치 할 수 있지만 쿼리에서 실제로 일치하는 열을 어떻게 알 수 있습니까? 확실히 PhpMyAdmin이 일치하는 조건을 오렌지색 상자로 추가했기 때문에 가능합니다.

검색하는 데 많은 시간을 썼지 만 적절한 용어를 검색하지 않아 해결책을 찾을 수 없습니다. 내가 발견했으나 여전히이 시나리오에 들어 맞지 않는 가장 가까운 것은 CASE WHEN 문을 사용하고 있습니다.

모든 아이디어를 얻을 수 있습니다.

감사합니다.

아담.

SELECT o.*, c.customer_name, 
     CASE WHEN o.orderID LIKE '%adam%' THEN 'orderID' 
      WHEN o.order_ref LIKE '%adam%' THEN 'order_ref' 
      ... 
      WHEN c.postcode LIKE '%adam%' THEN 'postcode' 
     END AS which_column_matched 
FROM ... 
:

답변

1

당신은 CASE 표현을 원하는
관련 문제