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

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

히어1 11년 전 조회 4,409
//이벤트선정자중 동일한사람이 잇는가?
$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개

채택된 답변
+20 포인트
11년 전
이부분에 대한 서브 쿼리는 쉬워요 select (select count(*) from atable) as t1, (select count(*) from btabl) as 2 from atable limit 1 뭐 이런식으로 하면 되요 충분히 응용가능하실거라 믿습니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

히어1
11년 전
잘살아보자님 죄송하지만 리밋의 정의가 뭔가요?
쓸대는 아무생각없이 썻지만 정확하게 어떤건지 파악을 해야할것 같아요.....
답변 부탁드릴수 잇을까요? (__);;;;;;;
히어1
11년 전
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];

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

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

11년 전
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
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

히어1
11년 전
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);

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


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

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

11년 전
mysql 에서는 제가 알려준 쿼리를 할 경우
 
보시면 select ( 이 안에 쿼리만 필요)  from (이 부분은 필요하지 않음)
 
from 부분에 대체할 만한 그 무엇인가가 없어요
 
그래서 저는 보통 데이터량이 적은 테이블 아니거나 써요.
 
당연 from 뒤에 있는 데이터는 출력시 나오지 않아요
count 라는 것을 보면 row가 한개 이잖아요.
 
그래소 from 뒤에 limit 1을 넣는 거에요
 
로그인 후 평가할 수 있습니다

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

11년 전
네.. for문 안에 쿼리 넣는 행위를 우리는 무한 쿼리라고 하죠
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

히어1
11년 전
네.....짜다보니 for문안에 쿼리가 들어가 있더라구요...정신차리고 외부로 빼고 쿼리를 단편화 시키는 작업중에 잇습니다 ^^

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

11년 전
참 그리고 해당 쿼리문을 for문안에 넣는건 어리석은 짓이죠? ㅎㅎ^^;;;;;;;;;;;;;
로그인 후 평가할 수 있습니다

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

11년 전
서브 쿼리 쓰세요
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

히어1
11년 전
제가 아직 서브쿼리까지는 개념이 안잡혓습니다 ;;;;;;;;;;

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

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

로그인