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

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

QA

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

본문

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

 

예를 들어


<?php
include_once('./_common.php');
 
$table=$_POST['tbl'];
$diseaseTarget=$_POST['diseaseTarget'];
$validityTarget=$_POST['validityTarget'];
$drugTarget=$_POST['drugTarget'];
$companyTarget=$_POST['companyTarget'];
$speciesTarget=$_POST['speciesTarget'];
 
if($table === "FISH_DRUG"){
 
  $sql = "SELECT DISTINCT DRUG_NAME 
            FROM ".$table.", ADMINISTRATION_METHOD, FISH_DISEASE, ACTIVE_INGREDIENTS_BY_DRUG, ACTIVE_INGREDIENT, MANUFACTURING_COMPANY, FISH_SPECIES
           WHERE  FISH_DRUG.DRUG_NAME LIKE '%".$drugTarget."%'
             AND FISH_DRUG.DRUG_CODE = ADMINISTRATION_METHOD.DRUG_CODE ";
  
  if(!($diseaseTarget === "")){
    $sql .= "AND FISH_DISEASE.DISEASE_CODE = ADMINISTRATION_METHOD.DISEASE_CODE
             AND FISH_DISEASE.DISEASE_NAME_KR = '".$diseaseTarget."'";
  }
  if(!($validityTarget === "")){
    $sql .= "AND FISH_DRUG.DRUG_CODE = ACTIVE_INGREDIENTS_BY_DRUG.DRUG_CODE 
             AND ACTIVE_INGREDIENT.INGREDIENT_CODE = ACTIVE_INGREDIENTS_BY_DRUG.ACTIVE_INGREDIENT_CODE
             AND ACTIVE_INGREDIENT.INGREDIENT_NAME = '".$validityTarget."'";
  }
  if(!($companyTarget === "")){
    $sql .= "AND FISH_DRUG.MANUFACTURING_COMPANY_CODE = MANUFACTURING_COMPANY.COMPANY_CODE 
             AND MANUFACTURING_COMPANY.COMPANY_NAME = '".$companyTarget."'";
  }
  if(!($speciesTarget === "")){
    $sql .= "AND FISH_SPECIES.SPECIES_CODE = ADMINISTRATION_METHOD.SPECIES_CODE 
             AND FISH_SPECIES.SPECIES_NAME = '".$speciesTarget."'";
  }
  $result = sql_query($sql);

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

 

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

$table .= ""FISH_DISEASE";

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

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

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

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

이 질문에 댓글 쓰기 :

답변 2

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

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

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1,537
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT