2012-10-03 4 views
-1

에 SQL 표는 I는 다음과 같이 SQL에서 만든 '거래'테이블이 있습니다데이터베이스 펄 스크립트

TransactionID Date   AccountNumber Type Amount 
657520   02-07-1999  016901581432 Debit 16000 
657524   02-07-1999  016901581432 Debit 13000 
657538   09-07-1999  016901581432 Credit 11000 
657548   18-07-1999  016901581432 Credit 15500 
657519   02-07-1999  016901581433 Debit 12000 
657523   02-07-1999  016901581433 Credit 11000 
657529   03-07-1999  016901581433 Debit 15000 
657539   10-07-1999  016901581433 Credit 10000 
657541   11-07-1999  016901581434 Debit 12000 
657525   03-07-1999  016901581434 Debit 15000 
657533   05-07-1999  016901581434 Credit 12500 

나는 데이터베이스를 사용하여 각 계정의 총 직불 금액과 총 크레딧 금액을 찾을 수있다. 내 코드는 다음과 같다 : 어디에서 잘못 가고

#!/usr/bin/perl 
use DBI; 
use strict; 
use warnings; 
print "content-type:text/html\n\n"; 
$dbh = DBI->connect('dbi:___','prithvi','*password*') or die "Couldn't connect"; 
my %trans; 
my $tran = $dbh->prepare("SELECT * FROM `transaction` LIMIT 0 , 11"); 
$tran->execute; 
while(my @row = $tran->fetchrow_hash) 
{ 
    my $tran = join ',', @row; 
    $trans{$tran[2]}{$tran[3]} += $tran[4]; 
} 
foreach my $acno(sort keys %trans) 
{ 
print "Total Amount deposited and total amount credited for Account Number $acno is Rs.$trans{$acno}{'Debit'} and Rs.$trans{$acno}{'Credit'}\n"; 
} 
$tran->finish; 
$dbh->disconnect; 

?

+1

당신이 점점 정확한 오류가 무엇입니까? – Gaurav

+0

출력을 0으로 얻고 있습니다. – user1708526

+0

오류가 없지만 적절한 출력을 얻지 못했습니다. – user1708526

답변

1

당신은 아마 아래의 코드에 @tran 선언 할 필요에 대한 몇 가지 피드백을 얻을 수 있습니다 use warningsuse strict을 추가하는 경우 : 당신이 시도하고로 사용할 때

while(my @row = $tran->fetchrow_hash) 
{ 
    my $tran = join ',', @row; 
    $trans{$tran[2]}{$tran[3]} += $tran[4]; 
} 

$ 트란이 657520,02-07-1999,016901581432,Debit,16000한다 정렬.

사용 데이터 : 덤퍼는 말에 트랜스 %에 넣어 무엇을 보여 :

use Data::Dumper; 
print Dumper(\%trans); 

당신이 찾으 셨나요?

while(my @row = $tran->fetchrow_array) 
{ 
    $trans{$row[2]}{$row[3]} += $row[4]; 
} 
+0

오. 네. 맞습니다. 출력이 있습니다. – user1708526

0

SQL을 사용하여 코드가 아닌이 대답을 얻으십시오.

SELECT AccountNumber, Type, SUM(Amount) FROM transaction GROUP BY AccountNumber, Type; 
+0

Perl 스크립트 자체의 결과를 얻고 싶습니다. 그게 내가 왜 도움을 요청하는지. – user1708526

+0

나는 그것이 가능하든 아니든 상관 없다. – user1708526

+0

차변 금액과 여신 금액을 모두 찾는 단일 SQL 쿼리가 무엇입니까? 미리 감사드립니다. – user1708526