From: Ian Jackson Date: Wed, 19 Aug 2009 23:27:03 +0000 (+0100) Subject: Include islands with no offers at all X-Git-Tag: 3.4~164 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=commitdiff_plain;h=890faab73220a817300d53a362464d6a7fc06788;hp=529d79634e714733d47e4cbcd385a727e9fae703 Include islands with no offers at all --- diff --git a/yarrg/web/query_commod b/yarrg/web/query_commod index a4063c1..4869e5c 100644 --- a/yarrg/web/query_commod +++ b/yarrg/web/query_commod @@ -94,12 +94,13 @@ foreach my $bs (split /_/, $ARGS{BuySell}) { my ($ascdesc) = ($bs eq 'buy') ? ('DESC') : ('ASC'); - +#INNER JOIN my $islands= $dbh->prepare( - "SELECT islandid, archipelago, islandname, sum(qty) as tqty - FROM $bs NATURAL JOIN islands - WHERE commodid = ? - GROUP BY islandid, + "SELECT islands.islandid AS islandid, archipelago, islandname, + sum(qty) as tqty + FROM islands LEFT OUTER JOIN $bs offers + ON islands.islandid == offers.islandid AND commodid == ? + GROUP BY islands.islandid, ORDER BY archipelago, islandname" ); @@ -135,21 +136,22 @@ foreach my $bs (split /_/, $ARGS{BuySell}) { % while ($island= $islands->fetchrow_hashref) { % my $islandid= $island->{'islandid'}; % $offers->execute($commodid, $islandid); -% my ($offer, $bestprice, $median, $marginal, @beststalls); +% my ($offer, $bestprice, $marginal, @beststalls); % my $tqty= $island->{'tqty'}; -% my $cqty= 0; -% my $bestqty= 0; -% my $approxqty= 0; +% my $cqty= ''; +% my $bestqty= ''; +% my $approxqty= ''; +% my $median= '-'; % while ($offer= $offers->fetchrow_hashref) { % my $price= $offer->{'price'}; % my $qty= $offer->{'qty'}; -% defined $bestprice or $bestprice= $price; +% length $bestqty or $bestprice= $price; % if ($price == $bestprice) { % $bestqty += $qty; % push @beststalls, $offer->{'stallname'}; % } % $cqty += $qty; -% if ($cqty*2 >= $tqty && !defined $median) { +% if ($cqty*2 >= $tqty && $median eq '-') { % $median= $price; % } % if ($bestprice*9 <= $price*10 and @@ -161,12 +163,13 @@ foreach my $bs (split /_/, $ARGS{BuySell}) { % $cqty == $tqty or die "$bs $cqty $tqty $commodid $islandid "; <% $island->{'archipelago'} |h %> <% $island->{'islandname'} |h %> - <% $nstalls==1 ? $beststalls[0] : "$nstalls offers" |h %> - <% $bestprice %> + <% $nstalls==0 ? '-' : + $nstalls==1 ? $beststalls[0] : "$nstalls offers" |h %> + <% length $bestqty ? $bestprice : '-' %> <% $median %> <% $bestqty %> <% $approxqty %> - <% $tqty %> + <% $cqty %> % }