테스트 사이트 - 개발 중인 베타 버전입니다

쿼리문을 조건에 따라 추가하여 값을 출력하고 싶습니다 채택완료

승슝 4년 전 조회 2,338

지금 값을 꺼내기 위한 쿼리문을 작성 중 입니다.

 

예를 들어

</p>

<p><?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>$table=$_POST['tbl'];</p>

<p>$diseaseTarget=$_POST['diseaseTarget'];</p>

<p>$validityTarget=$_POST['validityTarget'];</p>

<p>$drugTarget=$_POST['drugTarget'];</p>

<p>$companyTarget=$_POST['companyTarget'];</p>

<p>$speciesTarget=$_POST['speciesTarget'];</p>

<p> </p>

<p>if($table === "FISH_DRUG"){</p>

<p> </p>

<p>  $sql = "SELECT DISTINCT DRUG_NAME </p>

<p>            FROM ".$table.", ADMINISTRATION_METHOD, FISH_DISEASE, ACTIVE_INGREDIENTS_BY_DRUG, ACTIVE_INGREDIENT, MANUFACTURING_COMPANY, FISH_SPECIES</p>

<p>           WHERE  FISH_DRUG.DRUG_NAME LIKE '%".$drugTarget."%'</p>

<p>             AND FISH_DRUG.DRUG_CODE = ADMINISTRATION_METHOD.DRUG_CODE ";</p>

<p>  </p>

<p>  if(!($diseaseTarget === "")){</p>

<p>    $sql .= "AND FISH_DISEASE.DISEASE_CODE = ADMINISTRATION_METHOD.DISEASE_CODE</p>

<p>             AND FISH_DISEASE.DISEASE_NAME_KR = '".$diseaseTarget."'";</p>

<p>  }</p>

<p>  if(!($validityTarget === "")){</p>

<p>    $sql .= "AND FISH_DRUG.DRUG_CODE = ACTIVE_INGREDIENTS_BY_DRUG.DRUG_CODE </p>

<p>             AND ACTIVE_INGREDIENT.INGREDIENT_CODE = ACTIVE_INGREDIENTS_BY_DRUG.ACTIVE_INGREDIENT_CODE</p>

<p>             AND ACTIVE_INGREDIENT.INGREDIENT_NAME = '".$validityTarget."'";</p>

<p>  }</p>

<p>  if(!($companyTarget === "")){</p>

<p>    $sql .= "AND FISH_DRUG.MANUFACTURING_COMPANY_CODE = MANUFACTURING_COMPANY.COMPANY_CODE </p>

<p>             AND MANUFACTURING_COMPANY.COMPANY_NAME = '".$companyTarget."'";</p>

<p>  }</p>

<p>  if(!($speciesTarget === "")){</p>

<p>    $sql .= "AND FISH_SPECIES.SPECIES_CODE = ADMINISTRATION_METHOD.SPECIES_CODE </p>

<p>             AND FISH_SPECIES.SPECIES_NAME = '".$speciesTarget."'";</p>

<p>  }</p>

<p>  $result = sql_query($sql);</p>

<p>

이런식으로 조건을 주어 조건의 쿼리문을 추가하고 싶은데 이렇게 값을 내려고 하니 모든 테이블을 추가해서 그런지 속도가 엄청 느려졌습니다 ㅠㅠ

 

from 다음에 있는 테이블도 if 조건에 해당될 때 테이블을 추가하는 형식으로 하고 싶은데

$table .= ""FISH_DISEASE";

이렇게 넣으니 값이 나오지 않아 모두 나열하여 사용했는데 속도때문이라도 테이블 값을 추가해야할 것 같습니다!

어떻게 하면 좋을까요 ,,,ㅠㅠㅠ

이게 POST로 넘어오는 변수여서 값을 추가할 수 없는건지,,,,

아니면 따로 테이블 변수를 하나 더 추가하여 추가되는 테이블만을 따로 관리하고 싶은데 어떻게 하면 좋을까요?ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
뭉게뭉게

올려주신 글만 봐서는 from table1,table2..... 이렇게 나열되어 있으니 느려지는 건 당연한 듯 싶은데.

왜 저렇게 해야만 하는 상황인지 이해가 안 가네요.  table간 join할 키도 없는지.

근본 해결은 DB를 변경해야 할 듯 한데 해당 업무를 알 수 없으니 DB구조를 어떻게 하라고 충고 드리기도 어렵네요,

일반적인 Tip만 드린다면 distinct보다는 group by 쓰시는 게 속도는 나을 겁니다,

그리고 like 검색을 인덱스 적용 되도록 '검색어%' 로 가능한지도 살펴 보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

join을 사용하실 때는

index 관계를 잘 살펴 봐야 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인