Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: Problema con subQuery

  1. #1
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692

    Problema con subQuery

    Ciao.

    Scusate ma sono in crisi.

    Ho questa dati in una tabella in db mysql:

    Nome = Pippo
    Turno = 1
    Venduto = 50

    Nome = Tizio
    Turno = 2
    Venduto = 5

    Nome = Pippo
    Turno = 2
    Venduto = 30

    Dovrei estrarre dalla tabella:

    Nome = Pippo
    Turno = 1
    Venduto = 50
    Turno = 2
    Venduto = 30
    totale_venduto = 80

    Nome = Tizio
    Turno = 2
    Venduto = 5
    totale_venduto = 5

    Ho scritto questa query:

    codice:
    strSQL = " SELECT *, "
    
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM WHERE TURNO = 1 "
       strSQL = strSQL & " ) AS strVENDUTO_1, "
      
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM WHERE TURNO = 2 "
       strSQL = strSQL & " ) AS strVENDUTO_2 "
       
       strSQL = strSQL & "   FROM COMM "
       strSQL = strSQL & "   GROUP BY NOME "
       strSQL = strSQL & "   ORDER BY NOME ASC "
    Ma mi estrae per tutti e due i nomi il totale del venduto suddiviso per turno.... dove sbaglio??????

    Grazie-
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  2. #2
    sbagli a fare la query, è ovvio. non vuoi i risultati per turno ma fai la query per turno. che confusione, eh? è quel tuo vizio di andare di subquery, invece di fare delle query normali

  3. #3
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Grazie, ma non è tanto ovvio per me in quanto devo fare la somma per ciascun turno; puoi spiegarmi?
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  4. #4
    a me sembra che tu faccia la somma per persona, non per turno

  5. #5
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Originariamente inviato da optime
    a me sembra che tu faccia la somma per persona, non per turno
    codice:
    strSQL = " SELECT *, "
    
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM WHERE TURNO = 1 "
       strSQL = strSQL & " ) AS strVENDUTO_1, "
      
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM WHERE TURNO = 2 "
       strSQL = strSQL & " ) AS strVENDUTO_2 "
       
       strSQL = strSQL & "   FROM COMM "
       strSQL = strSQL & "   GROUP BY TURNO "
       strSQL = strSQL & "   ORDER BY NOME ASC "
    Per ciascun nome mi restituisce il totale del primo e del secondo turno...
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  6. #6
    fai già una group by per turno, non ti serve ri-specificare il turno nella where

  7. #7
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    codice:
    strSQL = " SELECT *, "
    
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM "
       strSQL = strSQL & " ) AS strVENDUTO_1, "
      
       strSQL = strSQL & " ( SELECT SUM(VENDUTO)"
       strSQL = strSQL & "   FROM COMM "
       strSQL = strSQL & " ) AS strVENDUTO_2 "
       
       strSQL = strSQL & "   FROM COMM "
       strSQL = strSQL & "   GROUP BY TURNO"
       strSQL = strSQL & "   ORDER BY NOME ASC "
    1) Ma così non distinguo tra venduto del primo e del secondo turno.
    2) Per ciascun nome mi restituisce la somma dei totali del primo e del secondo turno...
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  8. #8
    non so come dirtelo. non fare subquey

  9. #9
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    Originariamente inviato da optime
    non so come dirtelo. non fare subquey
    ok:

    codice:
    strSQL = " SELECT *, " 
       strSQL = strSQL & "   SUM(VENDUTO)"
       strSQL = strSQL & "   AS strVENDUTO "   
       strSQL = strSQL & "   FROM COMM"
       strSQL = strSQL & "   GROUP BY TURNO "
       strSQL = strSQL & "   ORDER BY NOME ASC "
    Stampa la somma del venduto dei due turni e non suddivisi per nome...
    "Ubi Maior, Minor Cessat"
    Domandare è lecito, rispondere è cortesia...
    A tutti è dovuta una risposta, comunque...

    “Dio gradisce molto di più le bestemmie dell’uomo disperato che non le lodi del benpensante la domenica mattina durante il culto“ Martin Lutero

  10. #10
    aggiungi il nome alla group by

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.