미채택 완료

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

2018-02-19 (월) 16:31:20 2,535
Copy
$sql2 = sql_query("select sum(cnt) cnt from (

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

union all 

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

) x");

<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>

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

도움좀 부탁드립니다..

|

답변 2개 / 댓글 3개

2018-02-19 (월) 16:48:16

$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 을 쓰지 않는 방향으로 생각해본 쿼리입니다. 참고가 될까 싶어 추가로 남깁니다.

Copy
$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
";

$row = sql_fetch($sql);

$recome_cnt = $row['cnt1'] + $row['cnt2'];

echo $recome_cnt;

답변에 대한 댓글 1개

안나오네요 ㅠㅠ 역시

중복 wr_3와 그 중복수가

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

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

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

$sql = "쿼리문";

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

var_dump($result)

답변에 대한 댓글 2개

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

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