두개의 db에서 한개의 결과를 뽑아야 합니다..
본문
$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
그누보드는 보안상 sql_query 함수에서 union 이 막혀 있습니다.
아래처럼 해도 되긴 하지만 다른 방법을 이용해보세요~
$sql = "쿼리문";
$result = mysqli_query($g5['connect_db'], $sql);
var_dump($result)
$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 을 쓰지 않는 방향으로 생각해본 쿼리입니다. 참고가 될까 싶어 추가로 남깁니다.
$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;
답변을 작성하시기 전에 로그인 해주세요.