Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema di group by

  1. #1

    Problema di group by

    Buon giorno, il problema è che non riesco ad estrapolare con una select count, da DB, soltanto i valori che non hanno oltrepassato una certa data.

    In pratica i record che non sono ancora scaduti li dovrebbe conteggiare al contrario di quelli scaduti.Eseguo questa select, ma restituisce questo errore:

    codice:
    Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
    Non riesco a capire come ovviare.
    Questa è la select:
    codice:
    	Select count(*) AS tot , b.CdBando, b.HhScad, b.DtScad FROM TBANBAN as a, TBDTBAN b
    	WHERE a.TpBando=2
    	AND a.StBando IN ("Ap11","Ap21","Ap22","Ap31","Ap33","Ap65","Ap66","Ap76","Ap77","Ap91","Ap99","Ap88")
    	AND
    	b.DtScad > b.DtInsert
    Sicuramente ce un'errore concettuale, potete aiutamri per favore?
    Grazie mille...

  2. #2
    Stai chiedendo a mysql di fare un raggruppamento, gli indichi svariati campi, ma non gli dici su quale/quali campi deve fare il raggruppamento.

    manca la condizione group by. Ma ti rendera' una sola riga per ogni raggruppamento.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per avermi risposto..ho fatto questa modifica:
    codice:
    	Select count(*) AS tot ,a.TpBando, b.CdBando, b.HhScad, b.DtScad FROM TBANBAN as a, TBDTBAN as b
    	WHERE a.TpBando=2
    	AND a.StBando IN ("Ap11","Ap21","Ap22","Ap31","Ap33","Ap65","Ap66","Ap76","Ap77","Ap91","Ap99","Ap88")
    	AND b.DtScad >= b.DtInsert
    	group by a.TpBando,b.CdBando,b.HhScad,b.DtScad
    In questo modo, non mi dà errore, però, mi restituisce 24 record, ma io vorrei soltanto, un conteggio totale, di quei record con data non scaduta..

    Spero di essermi spiegato..

  4. #4
    la query ti rende quello che chiedi.

    Se vuoi un conteggio totale di un qualcosa raggruppa per "quel" qualcosa. Ti manca poi la relazione tra le due tabelle. In pratica dovresti relazionare con un campo le due tabelle altrimenti ti esce 'na bufala da quel conteggio....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    puoi aiutarmi Piero?Per favore....?
    In pratica dovrei per quella count() estrapolare il conteggio, tramite quei parametri che ho postato sopra tipo:

    - a.TpBando=2
    - a.StBando IN("Ap11","Ap21","Ap22","Ap31","Ap33","Ap65","Ap66 ","Ap76","Ap77","Ap91","Ap99","Ap88")

    - b.DtScad >= b.DtInsert

    Dove (a) è la TBANBAN e (b) TBDTBAN.
    Ma la cosa importante è che dovrei controllare le date, DtScad( data scadenza) e DtInsert( data inserimento), tipo, se DtScad > di DtInsert, non mi deve estrapolare i relativi valori.

    Ho fatto duemila ricerche, ma, non riesco ad adattare quello che ho trovato...perchè ignoro!!

    Se puoi per favore..

  6. #6
    per quel che ho capito ...

    codice:
    select *, count(*) as tot
    from TBANBAN as a, TBDTBAN as b
    where a.TBANBAN = b.TBDTBAN      <---- qui ci vuole un riferimento tra le tabelle.
    a.StBando IN ("Ap11","Ap21","Ap22", "Ap31","Ap33","Ap65","Ap66", 
                        "Ap76","Ap77","Ap91","Ap99","Ap88")
    AND b.DtScad <= b.DtInsert
    group by a.TpBando,b.CdBando,b.HhScad,b.DtScad
    ma sinceramente... non ho capito quali dati devi raccogliere, qual'e' l'equi-join delle due tabelle
    (a.TBANBAN = b.TBDTBAN)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    in pratica dovrebbe restituirmi soltanto la count(*) della select e basta.!!!

    io continuo a provare, altre soluzioni...

  8. #8
    Non preoccuparti, ho risolto in maniera diversa...tramite quei codici "Ap11","Ap22" etc etc..

    Grazie mille.. alla prox

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.