select join e sottrazione punti

luigithen

Utente Attivo
31 Mar 2020
84
3
8
ciao a tutti eccomi di nuovo qui con una richiesta di aiuto dovrei sottrarre dalla somma questo è quello che ho usato

PHP:
SELECT punti.id_cliente, (sum(punti)- sum(punti_scalo)) as scalo,
                        scalo_punti.id_cliente FROM punti INNER JOIN scalo_punti ON punti.id_cliente=scalo_punti.id_cliente

da premettere che sum(punti) ha un totale di 8 mentre sum(punti_scalo) ha un totale di 1 quindi dovrebbe essere come totale 7 invece mi mostra 5
 
Ultima modifica:
Sum(punti) mi sembra sia una tabella e non una colonna. Comunque ti consiglio di fare delle prove più semplici per capire dove sta il problema
 
Sum(punti) mi sembra sia una tabella e non una colonna. Comunque ti consiglio di fare delle prove più semplici per capire dove sta il problema

grazie come sempre della risposta

ok trovata la soluzione è questa

PHP:
"SELECT SUM(r.punti_scalo)-( SELECT SUM(s.punti) FROM punti AS s
                        WHERE r.id_cliente=s.id_cliente) as differenza, r.id_cliente FROM scalo_punti AS r
                        WHERE r.id_cliente='" . $_GET["id_cliente"] . "' GROUP BY r.id_cliente"

una domanda se è possibile, siccome come numero mi restituisce -3 è possibile far visualizzare solo 3 senza il - ?
 
Puoi usare str_replace:
PHP:
$str = "-3";
echo str_replace("-","", $str);

avrei un'ultima domanda per favore e questa volta non sò proprio come fare.

allora ho 3 tabelle

Tabella A punti
in questa tabella inserisco i punti in base alla spesa che viene effettuata ed è così composta
punti.png


Tabella B scalo_punti
in questa tabella inserisco i punti da scalare dalla somma della tabella punti ed è così composta
scalo.png


Tabella C premi
in questa tabella sono presenti i premi che possono essere utilizzati quando si scalano i punti dalla tabella scalo_punti ed è così composta
premi.png


ora la mia domanda è questa
quando scalo i punti dalla tabella punti e questi vengono salvati in scalo_punti come posso selezionare il premio e farlo visualizzare nella scheda cliente ?

spero di essermi spiegato bene
 
Cioe? Non ho capito come deve essere selezionato il premio. Quando inserisci una riga nella tabella dei punti scalati, vuoi che venga visualizzata una riga dalla tabella premi? Se si, quale riga?

grazie come sempre della tua risposta

vorrei che se seleziono ad esempio tramite dropdown id_premi 1 quindi sconto del 20% questa venga salvata nella tabella scalo_punti

perdonami rettifico,

scalo dal totale dei punti e tramite dropdpwn seleziono il premio questi devono essere salvati in scalo punti
 
Ultima modifica:
allora ho provato a fare questo

questo salva

PHP:
<?php
require_once ("database/db.php");
$db_handle = new DBController();
if(!empty($_POST["submitscalo"])) {
    $query = "INSERT INTO scalo_punti (punti_scalo, data_scalo, premio, id_cliente)
    VALUES('".$_POST["punti_scalo"]."','".$_POST["data_scalo"]."', '".$_POST["premio"]."', '".$_GET["id_cliente"]."')";
        $result = $db_handle->executeQuery($query);
    if(!$result){
            $message="Problem in Adding to database. Please Retry.";
    } else {
        header("clienteprofilo.php");
    }
}
?>

con questo tramite dropdown seleziono il premio

PHP:
<select class="form-control">
          <option>Seleziona Premio</option>
        <?php foreach($users as $user): ?>
        <option value="<?= $user['premio']; ?>"> <?= $user['premio']; ?></option>
        <?php endforeach; ?>
                </select>

salva tutto ad esclusione del premio
cosa sbaglio ?
 
Il premio dove deve essere salvato? Nella tabella "premi" oppure bisogna fare dei calcoli per poi inserire in "scalo_punti"?
 
Il premio dove deve essere salvato? Nella tabella "premi" oppure bisogna fare dei calcoli per poi inserire in "scalo_punti"?

il premio è già presente quindi deve essere selezionato questa è la sua immagine

premi.png


quindi

1 seleziono il premio che è già presente
2 inserisco i punti da scalare
3 inserisco la data del giorno in cui richiede di scalare i punti
4 i punti da 1 a 3 devono essere salvati in scalo_premi che è un'altra tabella

nella replica precedente ho provato a fare il tutto ma l'unica cosa che non mi salva è il premio
 
Forse perche nella select devi mettere name="premio" per poterlo prendere con $_POST['premio']. Poi vedo che nell'insert del tuo codice c'è il campo "premio" nella tabella scalo_punti, mentre nella foto di questa tabella non c'è un campo che si chiama premio
 
Forse perche nella select devi mettere name="premio" per poterlo prendere con $_POST['premio']. Poi vedo che nell'insert del tuo codice c'è il campo "premio" nella tabella scalo_punti, mentre nella foto di questa tabella non c'è un campo che si chiama premio

ti allego in modo corretto il tutto

1 Tabella Premi
premi.png


2 scalo i premi
scalo.png


3 salvo i premi nella tabella scalo_premi
salvo premi.png


questo è il codice per salvare dove è presente anche premio

PHP:
<?php
require_once ("database/db.php");
$db_handle = new DBController();
if(!empty($_POST["submitscalo"])) {
    $query = "INSERT INTO scalo_punti (punti_scalo, data_scalo, premio, id_cliente)
    VALUES('".$_POST["punti_scalo"]."','".$_POST["data_scalo"]."', '".$_POST["premio"]."', '".$_GET["id_cliente"]."')";
        $result = $db_handle->executeQuery($query);
    if(!$result){
            $message="Problem in Adding to database. Please Retry.";
    } else {
        header("clienteprofilo.php");
    }
}
?>

questo è il dropdown dove seleziono il premio però non mi viene salvato in scalo premi (al punto 3)
PHP:
<select class="form-control">
          <option>Seleziona Premio</option>
        <?php foreach ($users as $user): ?>
        <option value="<?= $user['premio']; ?>"> <?= $user['premio']; ?></option>
        <?php endforeach; ?>

se utilizzo questo codice mi salva tutto tranne il premio

scaerm.png
 

Allegati

  • salvo premi.png
    salvo premi.png
    41,5 KB · Visite: 427
Ultima modifica:

Discussioni simili