따로 분리된 쿼리문을 합치고 각각 값을 뽑을수 잇는지요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
따로 분리된 쿼리문을 합치고 각각 값을 뽑을수 잇는지요?

QA

따로 분리된 쿼리문을 합치고 각각 값을 뽑을수 잇는지요?

본문

//이벤트선정자중 동일한사람이 잇는가?
$ev1_id = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and mb_id = '{$list[$i][mb_id]}' ");
 
//1번이벤트보상의 남은수구하기       
$ev1 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_6]' and mb_id = '' "); 
 
//2번이벤트보상의 남은수구하기    
$ev2 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_8]' and mb_id = '' ");
 
//3번이벤트보상의 남은수구하기    
$ev3 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_10]' and mb_id = '' ");
 
위 4개의 쿼리문을 각각 실행되지않고 한번에 실행으로
각 4개의 값을 구할수가 잇는지요?
 
가르침 부탁드립니다 ^^;;;;;;;;

이 질문에 댓글 쓰기 :

답변 6

이부분에 대한 서브 쿼리는
쉬워요

select (select count(*) from atable) as t1, (select count(*) from btabl) as 2 from atable limit 1

뭐 이런식으로 하면 되요

충분히 응용가능하실거라 믿습니다.

if ($bo_table == "m2" && $write[mb_id] == $member[mb_id] && $write[wr_3] == "개별상품") {

  //첫번째 보상남은수 뽑음
            $ev1 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_6]' and mb_id = '' ");
//두번째 보상남은수 뽑음
$ev2 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_8]' and mb_id = '' ");

if ($write[wr_10]) { //세번째보상이 있다면
//세번째 보상남은수 뽑음
$ev3 = sql_fetch(" SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_10]' and mb_id = '' ");
} //세번째보상이 있다면끝

=============================================위부분을 잘살아보자님의 답변으로 아래처럼 응용해보앗습니다.
맞는지요? ^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

if ($write[wr_10]) { //세번째보상이 있다면
$ev3_sql = " (select count(*) from g4_event WHERE part = '$write[wr_10]') as ev3, ";
} //세번째보상이 있다면끝

$evsql = " select
              $ev3_sql
              (select count(*) from g4_event WHERE part = '$write[wr_6]') as ev1,
  (select count(*) from g4_event WHERE part = '$write[wr_8]') as ev2
  from g4_event WHERE event_id ='$write[wr_id]'
  and mb_id = ''
  limit 1 ";
$evcnt = sql_fetch($evsql);
print_r($evf);
echo $evcnt[ev1]."//".$evcnt[ev2]."//".$evcnt[ev3];

} //---------------------------------------이벤트게시판이고 글쓴이라면실행끝

서브 쿼리 쓰세요
네.. for문 안에 쿼리 넣는 행위를

우리는 무한 쿼리라고 하죠
mysql 에서는 제가 알려준 쿼리를 할 경우
 
보시면 select ( 이 안에 쿼리만 필요)  from (이 부분은 필요하지 않음)
 
from 부분에 대체할 만한 그 무엇인가가 없어요
 
그래서 저는 보통 데이터량이 적은 테이블 아니거나 써요.
 
당연 from 뒤에 있는 데이터는 출력시 나오지 않아요
count 라는 것을 보면 row가 한개 이잖아요.
 
그래소 from 뒤에 limit 1을 넣는 거에요
 
select (SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_6]' and mb_id = '') as ev1 from (적당한 테이블) limit 1

if ($bo_table == "m2" && $write[mb_id] == $member[mb_id] && $write[wr_3] == "개별상품") {

$ev3_sql = "";
if ($write[wr_10]) { //세번째보상이 있다면
$ev3_sql = " (SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_10]' and mb_id = '') as ev3, ";
} //세번째보상이 있다면끝

$evsql = " select
  $ev3_sql
  (SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_6]' and mb_id = '') as ev1,
  (SELECT count(*) AS cnt FROM g4_event WHERE event_id ='$write[wr_id]' and part = '$write[wr_8]' and mb_id = '') as ev2
  from g4_event limit 1 ";
$evcnt = sql_fetch($evsql);

} //---------------------------------------이벤트게시판이고 글쓴이라면실행끝


이렇게 해야한다는 말씀이시지요?
파고들수록 오묘하네요 ;;;;;;;;;

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

회원로그인

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