Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
쿼리문을 조건에 따라 추가하여 값을 출력하고 싶습니다

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

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

QA

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

답변 2

본문

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

 

예를 들어


<?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 검색을 인덱스 적용 되도록 '검색어%' 로 가능한지도 살펴 보세요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로