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

Discussione: Query UNION ALL

  1. #1

    Query UNION ALL

    Hola a todos.

    Ho questa query, ma mi serve estrarre un altro campo chiamato UM:

    codice:
    SQL = " SELECT "
    SQL = SQL & " ID_CD, "
    SQL = SQL & "  SUM(TOT) AS strTOT, "
    SQL = SQL & "  SUM(QUANT) AS strQUANT "
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "
    SQL = SQL & "  GROUP "
    SQL = SQL & "  BY ID_CD "
    SQL = SQL & "  UNION ALL "
    SQL = SQL & "  SELECT NULL,"
    SQL = SQL & "  SUM(TOT), "
    SQL = SQL & "  SUM(QUANT)"
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "
    Ho provato così, ma dà errore:

    codice:
    SQL = " SELECT "
    SQL = SQL & " ID_CD, UM, "
    ...
    Dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di fero
    Registrato dal
    Dec 2000
    Messaggi
    265
    se aggiungi un campo alla prima select devi aggiungerlo anche alla seconda quando utilizzi UNION
    Fero
    Vuoi conoscere nuovi Amici?

  3. #3
    codice:
    SQL = " SELECT "
    SQL = SQL & " ID_CD, UM, "
    SQL = SQL & "  SUM(TOT) AS strTOT, "
    SQL = SQL & "  SUM(QUANT) AS strQUANT "
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "
    SQL = SQL & "  GROUP "
    SQL = SQL & "  BY ID_CD "
    SQL = SQL & "  UNION ALL "
    SQL = SQL & "  SELECT NULL, UM, "
    SQL = SQL & "  SUM(TOT), "
    SQL = SQL & "  SUM(QUANT)"
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "
    Grazie, ma:

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
    [MySQL][ODBC 3.51 Driver][mysqld-5.0.21-community-nt]Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause


  4. #4
    se usi la GROUP BY, i campi della select debbono essere degli aggregati (tipo SUM, AVG, MAX, ecc) oppure devi metterli anche nella GROUP BY

  5. #5
    Grazie, ma mi devo essere perso qualche pezzo x strada..:

    codice:
    SQL = " SELECT "
    SQL = SQL & " ID_CD, UM, "
    SQL = SQL & "  SUM(TOT) AS strTOT, "
    SQL = SQL & "  SUM(QUANT) AS strQUANT "
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "
    SQL = SQL & "  GROUP "
    SQL = SQL & "  BY ID_CD, UM "
    SQL = SQL & "  UNION ALL "
    SQL = SQL & "  SELECT NULL, UM, "
    SQL = SQL & "  SUM(TOT), "
    SQL = SQL & "  SUM(QUANT)"
    SQL = SQL & "  FROM TBL "
    SQL = SQL & "  WHERE "
    SQL = SQL & "  ID_CD = " & strID_CD & " "

    Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
    [MySQL][ODBC 3.51 Driver][mysqld-5.0.21-community-nt]Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause


  6. #6
    c'è sum anche nella seconda select, mettici la group by --

  7. #7
    Originariamente inviato da optime
    c'è sum anche nella seconda select, mettici la group by --
    E' vero, che tonto... grazie !!!!

  8. #8

  9. #9
    No, purtroppo questa benedetta query non va...

    Mi accorgo che quando l'unità di misura (UM) non è uguale per tutti gli ID_CD (Pezzi, confezione, etc) la query sbaglia l'estrazione perchè cerca di raggruppare qualcosa che non può....


    Ad esempio per due fatture diverse:

    Fattura A:
    strTOT = 86.81

    Fattura B:
    strTOT = 226,09

    Totale fatture x quel fornitore = 147.19 invece di 312.9

    E' soluzionabile?
    Gracias-

  10. #10
    ma tu devi fare una group by per UM o no?

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.