sql 질문 입니다.
본문
안녕하세요
sql 질문드립니다.. ㅠㅠ
member(회원정보) 테이블과 point(회원ID와,포인트정보) 테이블이 있을때
화면에 뿌려줄때 for문을 돌려 member 테이블 확 뿌리고 난뒤
point 테이블에 방금 for문 돌린 id와 일치한값의 point를 넣고 싶은데 방법을 잘모르겠어서 질문드립니다.
ㅠ.ㅠ 아래처럼 for문안에 또 for문 넣으면 될줄 알았는데 안되서....
-> 첫쿼리를 LEFT JOIN 사용하여 출력해보니 같은 아이디 결과값이 여러개나와
최고관리자 100point 최고관리자 100point 이런식으로 여러개인데
ex) 최고관리자 200point 처럼 이렇게 합산해서 한행으로 보여주고싶을땐 어떤방법이 있는지 궁금합니다.!
<?
$result = sql_query("SELECT * FROM member");
for ($i=0; $row=sql_fetch_array($result); $i++) {
$result02 = sql_query("SELECT * FROM point WHERE mb_id = {$row['mb_id']}");
for($o=0; $row02=sql_fetch_array($result02); $o++){
?>
<tr>
<td class="text-center">
<?= $i+1;?>
</td>
<td class="text-center">
<?= $row["mb_name"];?>
</td>
<td class="text-center">
<?= $row["mb_id"];?>
</td>
<td class="text-center">
<?= $row["mb_level"];?>
</td>
<td class="text-center">
<?= $row02["po_point"];?>
</td>
</tr>
<?php }}
답변 2
안녕하세요 , 포인트 합을 보여주실거면 두번째 for 는 필요없구요,
2번째 쿼리 안에서 sum() 함수 이용하면 될거같네요~
그리고 줄맞춤을 잘 해주시면 더 보기편하고 좋을거같네요~
<?php
$result = sql_query("SELECT M.mb_name, M.mb_id, M.mb_level, SUM(P.po_point) AS sum_point
FROM member AS M LEFT JOIN point AS P ON M.mb_id=P.mb_id
GROUP BY M.mb_id ORDER BY M.mb_id ASC");
// $total = sql_num_rows($result); // 전체 회원 수
$no = 1;
while ( $row=sql_fetch_array($result) ) {
?>
<tr>
<td class="text-center">
<?=$no++?>
</td>
<td class="text-center">
<?=$row['mb_name']?>
</td>
<td class="text-center">
<?=$row['mb_id']?>
</td>
<td class="text-center">
<?=$row['mb_level']?>
</td>
<td class="text-center">
<?=$row['sum_point']?>
</td>
</tr>
<?php
}
답변을 작성하시기 전에 로그인 해주세요.