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

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

QA

두개의 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;
답변을 작성하시기 전에 로그인 해주세요.
전체 123,663 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT