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

쿼리문 질문좀요.. 채택완료

포인트적립 4년 전 조회 1,742

쿼리문 조건이 여러개 일경우  if else 를 사용해서 작성하고 있는데요 이렇게 하다보니

너무 지저분하고 복잡해보이는데요....  뭔가 잘못하고있는거 같기도 하고요

혹시 아래 쿼리가 맞는건지.. 아니면 다른 방법이 있는지 조언좀 해주실수 있나요... 

 

</p>

<p>// 1단계  조건이 일치하는값 구하기</p>

<p>$sql = "select * from 테이블  where  a= '1' ";</p>

<p>~~~</p>

<p>if($row['idx']){</p>

<p>   //1단계 조건 값이 있다.</p>

<p>}else{</p>

<p>   //1단계 실패후  2단계로 조건 새롭게 해서 작성..</p>

<p>   $sql = "select * from 테이블  where  a= '1'  and b='1' ";</p>

<p>    ~~~</p>

<p>   if($row['idx']){</p>

<p>       //2단계 조건 값이 있다.</p>

<p>   }else{</p>

<p>       //2단계 실패후  3단계로 조건 새롭게 해서 작성..</p>

<p>       $sql = "select * from 테이블  where  a= '1'  and b='1'  and c='1' ";</p>

<p>       ..... 반복;;;</p>

<p>   }</p>

<p>}</p>

<p>

 

암만봐도 비효율 적인데... 고수님 조언 부탁드립니다~~ 꾸벅 (_ _

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

답변 2개

채택된 답변
+20 포인트
4년 전

컬럼 idx값이 보통의 index값 처럼 autoincrease되는 값이라면 

이렇게 할 필요가 없었겠죠.

그렇지 않은 값이라면 논리적으로는 맞습니다.

단, 너무 if 문 내로 깊이 들어가는 것은 바람직해 보이지 않습니다.

 

이것은 db의 table설계에 문제가 있지 않을까 봅니다.

 

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

답변에 대한 댓글 1개

포인트적립
4년 전
검색 조건을 다양하게 해서 검색을 생각하다보니 if else if else 사용했는데
이게 이렇게 하다보니 너무 깊숙하게 들어가는듯하여 혹시나 다른 방법이 있을가 문의 남겼었는데
좀 쉽게 할수 있는게 없나 생각좀 다시 해봐야겠네요 ㅋㅋ 답변 감사합니다

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

// 1단계  조건이 일치하는값 구하기
$sql = "select * from 테이블  where  a= '1' ";
~~~
if($row['idx']){
   //1단계 조건 값이 있다.
}else{
   //1단계 실패후  2단계로 조건 새롭게 해서 작성..
a='1' 조건으로 없는데
a= '1' and b='1' 이 조건으로 결과가 나올 수가 없죠.
   $sql = "select * from 테이블  where  a= '1'  and b='1' ";
로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

포인트적립
4년 전
아 예로 든건데요.. ㅠㅠ 제가 궁금한건
if else if else if else 이렇게 안으로 계속 중첩해서 들어가는 단계가 정상적인가... 아니면 다른 좋은 쿼리문? 이라고 해야하나 이런게 있는지 궁금해서 문의 드렸던건데 질문 전달이 잘못된듯합니다
답변 감사합니다~ ^^
엑스엠엘
4년 전
조건문을 query 안에 넣을 수도 있습니다.
실제 원하시는 내용을 올려 보세요.
포인트적립
4년 전
[code]
쿼리 = where 조건1
if(){
조건1에 대한 결과
}else{
쿼리 = where 조건2
if(){
조건2에 대한 결과
}else{
쿼리 = where 조건3
if(){
조건3에 대한 결과
}else{

}

}
}

이렇게 조건별로 어느 조건에서 결과가 노출되는지 보고 싶었던게 컸던거 같습니다;;;

그냥

쿼리 = where 조건1 or 조건2 or 조건3
if(){
조건 결과
}else{

}

이렇게 줄여 버렸습니다
[/code]

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

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

로그인