Visualizzazione risultati 1 fino 5 di 5
Like Tree1Likes
  • 1 Post By phollia

Discussione: php mysql select di tre tabelle con condizione di sottrazione

  1. #1
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito php mysql select di tre tabelle con condizione di sottrazione

    buongiorno a tutti, eccomi di nuovo qui con una nuova richiesta di aiuto al quale non riesco a venirne a capo di questo problema, allora ho 3 tabelle collegate

    Codice PHP:
    SELECT
    studente
    .id_studente,studente.nome,studente.cognome,studente.telefono,studente.email,
    studente.data_reg,studente.tessera,
    SUM(punti.punti)-SUM(scalo_punti.punti_scalo)
    FROM scalo_punti
    INNER JOIN punti
    ON punti
    .id_studente = scalo_punti.id_studente
    INNER JOIN studente
    ON studente
    .id_studente = scalo_punti.id_studente
    WHERE studente
    .id_studente = 2
    GROUP BY id_studente
    la tabella studente contiene id_studente, nome, cognome, telefono, email, data registrazione e numero della tessera
    vengono inserite le informazioni personali

    la tabella punti contiene id, id_studente, punti, data
    vengono inseriti i punti con la relativa data

    mentre la tabella scalo_punti contiene id, id_studente, scalo_punti
    vengono scalati i punti utilizzati

    il problema è questo come faccio ad effettuare una sottrazione ? cioè SUM(punti.punti)-SUM(scalo_punti.punti_scalo) ed avere solo il totale dei punti restanti cioè di punti_scalo?

    spero di essermi spiegato al meglio grazie a tutti

  2. #2
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito

    ho provato questo

    Codice PHP:
    SELECT
    studente
    .id_studente,studente.nome, studente.cognome,studente.telefono,studente.email,studente.data_reg,studente.tessera,
    (
    scalo_punti.punti_scalo - SUM(punti.punti)) AS restanti
    FROM scalo_punti
    INNER JOIN punti
    ON punti
    .studente = scalo_punti.id_studente
    INNER JOIN studente
    ON punti
    .studente = studente.id_studente
    WHERE scalo_punti
    .studente = 2
    GROUP BY punti
    .studente
    ma invece di farmi la sottrazione di questo (scalo_punti.punti_scalo - SUM(punti.punti)) AS restanti

    mi dà il totale di tutti

    cosa sbaglio ?

  3. #3
    phollia non è connesso Utente giovane
    Data registrazione
    05-02-2015
    Messaggi
    68

    Predefinito

    Perdonami, ma non ho capito perchè usi due tabelle per i punti (punti e scalo_punti).
    Non potresti usarne una sola impostando il valore negativo per quegli eventi che richiedono uno "scalo" dei punti?
    Otterresti anche che SUM ti restituisca il valore cercato.
    puntifedelta likes this.

  4. #4
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito

    scusa per il ritardo nella risposta, ma il professore è andato oltre e quindi questa è rimasta tra quelle da riprendere per lo studio (come sempre e poi si lamentano che non capiamo come funziona).

  5. #5
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Ciao,
    potresti fare la sottrazione dei due select separati...

    select
    (select sum(punti) from punti where punti.id_studente=id_studente)
    -
    (select sum(punti_scalo) from scalo_punti where punti_scalo.id_studente=id_studente)

    as difference

    chiaramente questo è riferito ad un singolo studente

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •