두개의 db에서 한개의 결과를 뽑아야 합니다.. 채택완료
</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개
$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개
댓글을 작성하려면 로그인이 필요합니다.
그누보드는 보안상 sql_query 함수에서 union 이 막혀 있습니다.
아래처럼 해도 되긴 하지만 다른 방법을 이용해보세요~
$sql = "쿼리문";
$result = mysqli_query($g5['connect_db'], $sql);
var_dump($result)
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
중복 wr_3와 그 중복수가
리스트로 나와야 해서 while문을 사용한거거든요 ㅠㅠ