Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Query con estrazione somma numerica

    CIAO.....ho un problemino....

    PREMESSA: Ho due tabelle; “tbl_automobili ” (elenco automobili riparate) e “tbl_sostituzioni ” (elenco parti sostituite); sono legate da una relazione UNO-MOLTI (il campo “id” della tabella automobili è la chiave esterna della tabella sostituzioni).
    La tabella “tbl_sostituzioni” contiene tra l’altro un campo valuta “totale” con l’importo di ogni parte sostituita (quantità * prezzo_unitario)

    ESEMPIO:
    tbl_automobili ” id=1, descrizione=FIESTA, proprietario=LUCA
    tbl_sostituzioni ” totale1=15€, totale2=3€

    tbl_automobili ” id=2, descrizione=PUNTO , proprietario=ROBERTA,
    tbl_sostituzioni ” totale1=3€, totale2=3€, totale3=4€

    tbl_automobili ” id=3, descrizione=GOLF , proprietario=STEFANO,
    tbl_sostituzioni ” …nessuna sostituzione

    DOMANDA:
    E’ possibile eseguire una query in modo che vengano estratti dati dalla tabella “tbl_automobili” e l’importo TOTALE dalla tabella “tbl_sostituzioni” per ogni automobile? Nell’esempio:
    id1 --- FIESTA --- LUCA --- 18€
    id2 --- PUNTO --- ROBERTA ---10€
    id3 --- GOLF --- STEFANO ---0€

    Grazie!!!

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    SELECT tbl_automobili.*, SUM(tbl_sostituzioni.totale) AS totale_cliente FROM tbl_automobili, tbl_sostituzioni WHERE tbl_automobili.id = tbl_sostituzioni.id"
    Non ho provato ovviamente...

    Roby

  3. #3
    Grazie Roby_72: ho provato con il tuo suggerimento, ma viene restituito il seguente errore: "Impossibile eseguire una query che non include l'espressione "id" specificata come parte di una funzione di aggregazione"

    Se la query è invece la seguente:
    SELECT tbl_automobili.*, tbl_sostituzioni.totale_cliente
    FROM tbl_automobili, tbl_sostituzioni
    WHERE tbl_automobili.id = tbl_sostituzioni.id


    funziona (anche se ovviamente non fa la somma).....


  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    SELECT tbl_automobili.id, tbl_automobili.nome, tbl_automobili.auto, SUM(tbl_sostituzioni.totale) AS totale_cliente FROM tbl_automobili, tbl_sostituzioni WHERE tbl_automobili.id = tbl_sostituzioni.id GROUP BY tbl_automobili.id, tbl_automobili.nome, tbl_automobili.auto"
    Roby

  5. #5
    Dunque: ora funziona bene, ad eccezione che se il campo sostituzioni.totale vale 0, il record non viene mostrato...

  6. #6
    O per meglio dire: se nella tabella "tbl_sostituzioni " non c'è nessun record, la condizione

    WHERE tbl_automobili.id = tbl_sostituzioni.id

    è falsa, e quindi non estrae niente....
    Non si riesce in qualche modo ad estrarre ugualmente il record indicando il valore "totale_cliente" = 0 ?

    id1 --- FIESTA --- LUCA --- 18€
    id2 --- PUNTO --- ROBERTA ---10€
    id3 --- GOLF --- STEFANO ---0€

  7. #7
    Sempre io: riprendendo l'esempio:

    “tbl_automobili ” id=1, descrizione=FIESTA, proprietario=LUCA
    “tbl_sostituzioni ” totale1=15€, totale2=3€

    “tbl_automobili ” id=2, descrizione=PUNTO , proprietario=ROBERTA,
    “tbl_sostituzioni ” totale1=3€, totale2=3€, totale3=4€

    “tbl_automobili ” id=3, descrizione=GOLF , proprietario=STEFANO,
    “tbl_sostituzioni ” …nessuna sostituzione

    “tbl_automobili ” id=4, descrizione=FIESTA, proprietario=MARCO
    “tbl_sostituzioni ” totale1=1€, totale2=2€, totale3=3€


    Con la seguente query suggerita da Roby_72 eseguo questi dati:
    SELECT tbl_automobili.id, tbl_automobili.nome, tbl_automobili.auto, SUM(tbl_sostituzioni.totale) AS totale_cliente
    FROM tbl_automobili, tbl_sostituzioni
    WHERE tbl_automobili.id = tbl_sostituzioni.id
    GROUP BY tbl_automobili.id, tbl_automobili.nome, tbl_automobili.auto

    id1 --- FIESTA --- LUCA --- 18€
    id2 --- PUNTO --- ROBERTA ---10€
    id3 --- GOLF --- STEFANO ---0€
    id4 --- FIESTA --- MARCO ---6€


    Se voglio fare la somma di tutti i totali non ho problemi:
    SELECT SUM(tbl_sostituzioni.totale) AS totale_generale
    FROM tbl_sostituzioni

    totale_generale=34

    ….il problema che se nella query voglio solo il totale_generale di un modello specifico, per esempio:

    FIESTA --- 24

    non riesco ad ottenerlo……help…! :master:

  8. #8
    Nessuna buon'anima mi sa dare una dritta?....

  9. #9
    nella WHERE devi mettere i due campi correlati (WHERE tbl_automobili.id = tbl_sostituzioni.id_auto)

  10. #10
    Ma così facendo, se per esempio volessi filtrare tutte le auto "FIESTA", otterrei due risultati:

    (id1 --- FIESTA --- LUCA) = 18€
    (id4 --- FIESTA --- MARCO) = 6€

    mentre vorrei ottenere un unico risultato (24€)....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.