[Italia-pm] Quesito su conteggio in query.

Flavio Poletti polettix at gmail.com
Sun Oct 21 23:21:32 PDT 2018


Il giorno dom 21 ott 2018 alle ore 10:36 Giorgio Brigato <
giorgio.brigato at gmail.com> ha scritto:

> Buongiorno a Tutti.
>
> Premetto che NON sono un programmatore, ma un "dilettante allo sbaraglio".
>
> Possiedo uno script che alimenta una tabella MySql (valutazioni).
> Tramite una query (seleziona il seminario [ad esempio] numero 077 [ma
> variabile di volta in volta]) vorrei contare le persone presenti (presenza
> = 1) che hanno compilato un record di valutazione.
>
> Questo il criterio di ricerca:
>
> $presenzawork=~tr/[a-zA-Z0-9 ]//cd;
> if ($item eq "presenza" && $presenzawork){
> $p1="LCASE(";
> $p2=") regexp \"\[\[:<:\]\]";
> $p3="\+\"";
> @presenzawork=split(/ /,$presenzawork);
> foreach $chunk (@presenzawork){
> push(@allsearchterms,"$p1$item $p2$chunk$p3");}}
>

Leggendo oltre, non capisco perché sia stato incluso il codice qui sopra.
Se "limi" le domande all'osso hai più probabilità di essere capito ;-)



> La query:
>
> my $dbh = DBI->connect ("DBI:$databaseserver:$dbase:$hostname",
>       $username, $mysqlpassword, {RaiseError=>0, PrintError=>1})
>    or security("Can't take requested action");
> my ($sumpresenza) = $dbh->selectrow_array('SELECT SUM(presenza) FROM
> valutazioni');
> $dbh->disconnect();
>
> print "<td><B>Presenze:<br><center>$sumpresenza</center></B></td>\n";
>
> mi conteggia TUTTI i record con valore 1 nel campo "presenza".
>
> Come posso modificare lo script per restringere la somma ai soli record
> con numero di seminario [ad esempio] 077?
>

Per avere aiuto su una query, dovresti quantomeno mandare la definizione
della tabella o delle tabelle coinvolte (quella roba che inizia con "CREATE
TABLE" per intenderci). Nel caso specifico, la tabella "valutazioni".

Se la colonna di "valutazioni" che registra l'identificativo del seminario
è chiamata "seminario", puoi provare qualcosa del genere:

my $seminario_di_interesse = '077';
my ($sumpresenza) = $dbh->selectrow_array('SELECT SUM(presenza) FROM
valutazioni WHERE seminario = ?', undef, $seminario_di_interesse);

Link utili:

* query SQL: c'è parecchio in giro, con varianti a seconda del backend
utilizzato (SQLite, Postresql, ...). Nel caso di MySQL 8.0, una query
SELECT ha questo "formato":
https://dev.mysql.com/doc/refman/8.0/en/select.html
* come si inseriscono "variabili" nelle query con DBI:
https://metacpan.org/pod/DBI#Placeholders-and-Bind-Values
* dove vanno messe le "variabili" di selectrow_array:
https://metacpan.org/pod/DBI#selectrow_array

Ciao,

    Flavio.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/italia-pm/attachments/20181022/2917711b/attachment.html>


More information about the Italia-pm mailing list