내 코드에 문제가 있습니다. 데이터베이스에 연결하는 코드입니다.이 고유 데이터를 다른 테이블에서 선택하고, 내 코드에 아무런 문제가 없습니다. 알았어.하지만 쿼리하는 데 너무 오랜 시간이 걸린다.내 경우에 SQL 실행 속도가 느림
<?php
include "koneksi.php";
$no=1;
$arqury=odbc_exec($koneksi, "SELECT DISTINCT NIP_AR,NAMA_AR FROM USRBPS.MASTERFILE");
while($ar=odbc_fetch_array($arqury)){
$total=0;
$ambilqury=odbc_exec($koneksi, "SELECT NPWP FROM USRBPS.MASTERFILE WHERE NIP_AR='$ar[NIP_AR]'");
while($ambil=odbc_fetch_array($ambilqury)){
$testqury=mysql_query("SELECT SUM(jumlah_bayar) as PENERIMAAN FROM mpnruteng WHERE npwp='$ambil[NPWP]'");
$test=mysql_fetch_array($testqury);
$total += $test[PENERIMAAN];
}
if($ar[NIP_AR]==""){
echo "<tr><td>$no</td><td colspan=2>UNASSIGN</td><td>$total</td>";
}
else{
echo "<tr><td>$no</td><td>$ar[NAMA_AR]</td><td>$ar[NIP_AR]</td><td>$total</td></tr>";
}
$no++;
}
?>
간단하게 다음과 같이되고있는에,
|Name |num_se
---------------
|andre |1111
|john |2222
|simon |3333
|andre |4444
|andre |5555
|simon |6666
|john |7777
|num_se |Total
---------------
|1111 |12
|2222 |15
|3333 |10
|4444 |8
|5555 |20
|6666 |18
|7777 |22
그래서, 내가 필요한 것은 각각의 '이름'에서 '전체'의 합계를 얻을 수있다. 내가 얻고 싶은 것은 num_se에서 얻는 "합계"의 각 합계로 "고유"(이 예에서는 Andre, John 및 Simon)라는 이름의 목록입니다.
죄송합니다. 제 영어는 좋지 않지만 이해하길 바랍니다.
인덱스가 필요하지 않을 수도 있고 루핑 대신 조인을 사용하는 것이 좋습니다. –
다른 데이터베이스로 작업 하시겠습니까? 당신이하지 않는 경우에 당신은 당신의 SQL을 하나의 쿼리 문으로 결합 할 수 있습니다. 이것은 최적화 된 db 엔진으로부터 큰 이익을 얻을 것입니다. 적어도 SELECT NIP_AR, NAMA_AR, NPWP FROM USRBPS.MASTERFILE ORDER BY NIP_AR'을 반복합니다. – collapsar