2014-02-17 3 views
0

안녕하세요.SQL 쿼리를 최소화하는 방법?

... 
WHERE name LIKE 'стоматолог' 
    OR name LIKE 'стоматолог[$-()/ ]' 
    OR name LIKE 'стоматолог[$-()/ ]%' 
    OR name LIKE 'стоматолог[аеёиоуыэюяъь]' 
    OR name LIKE 'стоматолог[аеёиоуыэюяъь][$-()/ ]%' 
    OR name LIKE 'стоматолог[аеёиоуыэюяъь][йюм$-()/ ]' 
    OR name LIKE 'стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%' 

    OR name LIKE '[$-()/ ]стоматолог' 
    OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь]' 
    OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]' 
    OR name LIKE '[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%' 

    OR name LIKE '%[$-()/ ]стоматолог' 
    OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь]' 
    OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]' 
    OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ]%' 

    OR name LIKE '%[$-()/ ]стоматолог[$-()/ ]%' 
    OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][$-()/ ]%' 
    OR name LIKE '%[$-()/ ]стоматолог[аеёиоуыэюяъь][йюм$-()/ ][$-()/ ]%' 

은 내가 그것을 어떻게이 쿼리를 최소화하고 정말하기 바랍니다주기 :

name 

стоматолог 
стоматолога 
стоматологом 
врач стоматолог 
врача стоматолога 
врач-стоматолог 
врача-стоматолога 
врача стоматолога-терапевта 
врача-стоматолога$ 
врача-стоматолога$1 
врача-стоматолога-терапевта$ 
врача-стоматолога-терапевта$1 
врачом-стоматологом 
врачом стоматологом-терапевтом 
врачом-стоматологом-терапевтом 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА БЕСПЛАТНАЯ 
УСЛУГИ СТОМАТОЛОГИЧЕСКИЕ ХИРУРГ-СТОМАТОЛОГ 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА-ХИРУРГА 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА-ХИРУРГА 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА 
КОНСУЛЬТАЦИЯ (ПРИЕМ) ВРАЧА-СТОМАТОЛОГА ДЕТСКОГО БЕСПЛАТНАЯ ВСЕ ВИДЫ 

내가 다음 쿼리를 사용 :

테이블 행이?

추신 : 이제 쿼리에 17 조건이 있습니다 (where). 가능하다면이 모든 조건들을 정리하고 싶습니다.

+1

달성하고자하는 것은 무엇입니까? – Alexander

+0

@Alexander 이제 질의에 17 가지 조건이 있습니다 ('where'). 가능하다면이 모든 조건들을 정리하고 싶습니다. –

+0

먼저 모든 조건을 주석으로 처리 한 다음 하나씩 주석을 제거해야한다고 생각합니다. 예를 들어 OR 이름은 OR $ LIKE 'стоматолог [$ -() /] %' 동일한 행 수. '$ -() /]'는 필요하지 않습니다. 등등. – KumarHarsh

답변

-2

나는 당신이 할 수 있다고 생각 변수의 배열을 통해 루프를 사용한다 : 우리는 루프 전에 쿼리의 첫 번째 partt의 첫 번째 변수를 사용

$column = 'p.name' 
$variables = array('стоматолог[$-()/ ]','стоматолог[$-()/ ]',....); 

$query= "WHERE {$column} LIKE '%стоматолог%' "; 

foreach($variables as $variable) 
{ 
    $query .= "OR {$column} LIKE '%{$variable}%' "; 
} 

공지 사항

2

name LIKE '%word%' 가져옵니다 '단어 ','두 번째 단어 ','두 번째 단어 '및'한 단어 세 '로 구성됩니다. 따라서 LIKE의 중복성을 제거하십시오. 그러면 최소한 LIKE 초가 줄어 듭니다.