Select includendo operazione matematica

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buongiorno a tutti,

e da un pò che non ci si vede :hammer:

avrei bisogno di un chiarimento.

io dovrei estrarre dei dati di una tabella per isnerirli in una select box però mi servirebbe che questa query mi faccia già un conteggio

ad esempio ho provato con

PHP:
SELECT * FROM  tabella  WHERE ID='$x' AND Contratto -3 < Contratto_base

in pratica la select dovrebbe estrarre tutte le righe del campo Contratto , assegnate a quell'ID, sottrarre 3 a tutte le righe e verificare che siano ognuno inferiore al campo Contratto_base.

Esempio di tabella
ID |Nome|Contratto|Contratto_base
1 | Pippo| 8 |4
1|Topolino|4|2
1|Pluto|7|7

In pratica la query doovrebbe estrarre per l'ID "1" i tre contratti 8,5 e 7 sottrarre x(3 nell'esempio) e quindi ottenere 5 per pippo,1 pertopolino,5 per pluto

poi deve verificasre che questi valori sinao minori del campo conteratto base quindi come da aesempio

5(pippo)<4
1 (topolino)<2
3(pluto)<7

in questo caso restituirmi solo Topolino.

E' possibile farlo con la sintassi di sql descritta sopra?

O devo per forza di cosa estrarre tutte le righe e far compiere le verifiche dal foreach?
 
Inserisci le parentesi tonde nella query cosi facendo gli dici di effettuare prima quell operazione e poi l altra.
PHP:
SELECT * FROM  tabella  WHERE ID='$x' AND ( Contratto -3 ) < Contratto_base
 
In questo periodo:
In pratica la query doovrebbe estrarre per l'ID "1" i tre contratti 8,5 e 7 sottrarre x(3 nell'esempio) e quindi ottenere 5 per pippo,1 pertopolino,5 per pluto
Hai fatto una marea di errori oppure è proprio quello che vuoi?
Perché intanto i tre contratti sono 8, 4 e 7 e poi per quello che hai detto dopo dovresti avere 5, 1 e 4.
 
Scusate il ritardo ams to un pò incasinato allora
PHP:
$sqlquery = "SELECT * FROM  Tabella  WHERE ID_utente ='$idutente' AND (Contratto - 3) < Base ";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
while ($number > $i) {
$ID=mysql_result($result,$i,"ID");
$risultato= mysql_result($result,$i,"Nome");
echo  "<option value=\"$ID\">$risultato</option>";
$i++;
}

questo è il codice con la modifica suggeritami ma non va.

Speigo emglio è più semplicemnte

La query deve listarmi tutte le righe dove Il campo contratto - 3(questo è un numero fisso) è inferiore a Base.

quindi

pippo | 7| 3
non deve listarmelo perchè(7-3)=4 e non è inferiore a base(3)
Topolino | 4 |2 deve listarlo eprcheè (4-3)01 ed è inferiore abase (2)
 
Prova cosi
PHP:
$query = 'SELECT * FROM  Tabella  WHERE ID_utente ="'.$idutente.'" AND (Contratto - 3) < Base '; 
$result = mysql_query( $query );

if( $result && mysql_num_rows($result) > 0 ){
   while( $obj = mysql_fetch_object($result) ){
         
        echo $obj -> ID.'<br/>';

   }
}
 
Prova cosi
PHP:
$query = 'SELECT * FROM  Tabella  WHERE ID_utente ="'.$idutente.'" AND (Contratto - 3) < Base '; 
$result = mysql_query( $query );

if( $result && mysql_num_rows($result) > 0 ){
   while( $obj = mysql_fetch_object($result) ){
         
        echo $obj -> ID.'<br/>';

   }
}

dicesi pappa pronta ;) me la dovresti spiegare non ho molta confidenza con questo sistema $obj->ID cosa indica?

cmq ho risolto non malmenatemi am sbagliavo solo il richiamo della clausola WHERE

PHP:
ID_utente ="'.$idutente.'"

inq uella tabella avevo il nome utente non l'id :dipser:

quindi era

PHP:
Nome_utente ="'.$nome_utente.'"

era buona lq query citata su

grazie ragazzi :beer:
 

Discussioni simili