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

두개의 db에서 한개의 결과를 뽑아야 합니다.. 채택완료

humanb2box 7년 전 조회 2,367

</p>

<p>$sql2 = sql_query("select sum(cnt) cnt from (</p>

<p>SELECT count(wr_3)  AS recomcount   FROM g5_write_table GROUP BY wr_3 HAVING count(*) > 1 </p>

<p>union all </p>

<p>SELECT count(wr_3)  AS recomcount  FROM g5_write_table2 GROUP BY wr_3 HAVING count(*) > 1 </p>

<p>) x");</p>

<p><ul>

<?php while($row2= sql_fetch_array($sql2)) { ?> 

    <li>

            <span>전화번호 : <?php echo $row2["wr_3"]; ?></span>,

                <span> 추천수 : <?php echo $row2['recomecount']?></span> 

    

        </li>

        <?php } ?> 

</ul></p>

<p>

 

 

이렇게 두개의 db 에서 중복된 wr_3와 중복된 수를 뽑아야 하는데 나오지가 않네요..

 

도움좀 부탁드립니다..

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

답변 2개

7년 전

$sql2 의 결과값은 단일 레코드, 단일값입니다. 

쿼리를 phpmyadmin 이나 db툴에서 실행해보면 확인하실 수 있습니다.

 

지금의 코드를 사용한다면,

$row2['recomecount'] 가 아닌 $row2['cnt'] 로 변경되어야 합니다.

 

해당 쿼리에서는 $row2["wr_3"] 값은 나오지 않을 것입니다.

 

wr_3 값과 cnt 합 값은 따로 따로 구하는게 낫지 않을까 싶습니다.

cnt 합 값만을 따로 구한다면 while 문을 쓰지 않고, 다음과 같은 코드로 해야되지 않을까 합니다.

$row = sql_fetch($sql2);

$recome_cnt = $row['cnt']

echo $recome_cnt;

 

union  all 을 쓰지 않는 방향으로 생각해본 쿼리입니다. 참고가 될까 싶어 추가로 남깁니다.

</p>

<p>$sql = "

    select 

    (

    select count(*)

      from g5_write_table

     group by wr_3

    having count(*) > 1

    ) cnt_1,

    (

    select count(*)

      from g5_write_table2 

     group by wr_3

    having count(*) > 1

    ) cnt_2

";</p>

<p>$row = sql_fetch($sql);</p>

<p>$recome_cnt = $row['cnt1'] + $row['cnt2'];</p>

<p>echo $recome_cnt;</p>

<p>

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

답변에 대한 댓글 1개

h
humanb2box
7년 전
안나오네요 ㅠㅠ 역시

중복 wr_3와 그 중복수가

리스트로 나와야 해서 while문을 사용한거거든요 ㅠㅠ

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

7년 전

그누보드는 보안상 sql_query 함수에서 union 이 막혀 있습니다.

아래처럼 해도 되긴 하지만 다른 방법을 이용해보세요~

 

$sql = "쿼리문";

$result = mysqli_query($g5['connect_db'], $sql);

var_dump($result)

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

답변에 대한 댓글 2개

h
humanb2box
7년 전
역시 안나오네용 ㅎㅎ
뽁스
7년 전
mysql 버전(설정)에 따라 mysqli_query 또는 mysql_query 를 사용해야 됩니다.

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

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

로그인