Autore Topic: [Risolto] Conteggio del numero di records con lo stesso campo testo  (Letto 1307 volte)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Un argomento simile è già stato trattato in http://www.gambas-it.org/smf/index.php?topic=1308.0
ma non riesco ad addattarlo, ho carenze con gli array.

Ho un recordset dove è possibile che un campo testo si ripeta, mi serve sapere per ogni campo testo il conteggio

Esempio.

record 1 ricetta "Bresaola"
record 2 ricetta "Pasta"
record 3 ricetta "Bresaola"

Il conteggio mi serve per sapere se in un dato periodo di tempo una ricetta ricorre piu' volte, per sapere le quantità totali di alimenti da acquistare.

Allego pdf che non mi piace proprio come output, non somma i grammi..Un problema potrebbe essere che ho due recordset, uno per i pasti (dove sono gli id delle ricette) e uno per il dettaglio delle ricette (collegato all'id della ricetta).

Attualmente il codice della stampa per i recordset del dettaglio è cosi' strutturato:

Codice: [Seleziona]
FOR EACH myres 
      ........
      myres2 = myconn2.Exec("select ........ from ricette,dettaglio on  ricette.IDDETT=dettaglio.ID where ricette.ID=&1 order by dettaglio.ALIMENTO asc", myres!IDRICETTA)
      ........
      FOR EACH myres2
        print myres2!ALIMENTO
        print myres2!GRAMMI
      NEXT
    NEXT
  ENDIF
« Ultima modifica: 03 Ottobre 2010, 22:38:43 da andy60 »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #1 il: 03 Ottobre 2010, 20:16:07 »
Puoi usare la GROUP BY... Ovviamente inserendo un comando di aggregazione (es. SELECT COUNT(qualchecosa), altri campi FROM ecc. )

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #2 il: 03 Ottobre 2010, 20:19:39 »
Puoi usare la GROUP BY... Ovviamente inserendo un comando di aggregazione (es. SELECT COUNT(qualchecosa), altri campi FROM ecc. )

non so se si puo' fare, per ogni ricetta faccio il sottoloop degli alimenti, che dici se creo una tabella temporanea dove metto tutti i dati per poi aggregarli?
« Ultima modifica: 03 Ottobre 2010, 20:21:57 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #3 il: 03 Ottobre 2010, 21:44:10 »
mmm non capito una cosa...

immagino che le tabelle in questione siano tre:

una la chiamo Ricetta_Testa che contiene la descrizione della ricetta e relativa preparazione
una Ricetta_Righe che contiene gli alimenti
e una terza che sara' Menu_Settimanale dove saranno elencati i vari piatti di colazione pranzo e cena di tutta la settimana....

bene, se e' cosi' basta fare:

Codice: sql [Seleziona]
SELECT Count(Ricetta_Righe.Alimento) As Conteggio, SUM(Ricetta_Righe.Grammi) As Peso, Ricetta_Testa.DsRicetta
 FROM Ricetta_Testa INNER JOIN Ricetta_Righe On (Ricetta_Testa.Id = Ricetta_Righe.Id) INNER JOIN Menu_Settimanale ON (Menu_Settimanale.Id = Ricetta_Testa.Id)
GROUP BY Ricetta_Testa.DsRicetta
ORDER BY Ricetta_Testa.DsRicetta;


in questo caso la query ti somma (e conteggia) sia i grammi che trova nelle singole ricette e somma anche per quante volte vengono usate le ricette durante la settimana...

spero di non averti confuso le idee... :)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #4 il: 03 Ottobre 2010, 22:16:18 »
ho semplificato le cose, vediamo se mi puoi aiutare, la tabella si chiama 'temporanea' è composta da tre campi testo, RICETTA,ALIMENTO,GRAMMI. Non consideranto il primo (non serve x ora) devo estrarre il campo alimento raggruppato e fare la somma del campo grammi (opportunatamente convertito in float), questa sql mi da il totale dei grammi, senza considerare se il totale è giusto, non mi raggruppa:
Codice: [Seleziona]
mysql = "SELECT COUNT(temporanea.ALIMENTO) as 'Comprare', SUM(temporanea.GRAMMI) As 'Gr' FROM temporanea GROUP BY 'Comprare' ORDER BY 'Comprare' asc" 

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #5 il: 03 Ottobre 2010, 22:25:43 »
Innanzi tutto penso che puoi levare via gli apici dopo i vari As.
Poi togli il GROUP BY Comprare, perche' e' gia' raggruppato dalla funzione Count...

Fammi sapere

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #6 il: 03 Ottobre 2010, 22:27:03 »
hu non ho letto una cosa, perche' tre campi testo?

il campo grammi dovrebbe essere di tipo float...

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #7 il: 03 Ottobre 2010, 22:31:49 »
hu non ho letto una cosa, perche' tre campi testo?

il campo grammi dovrebbe essere di tipo float...

dovrebbe...non mi andava di modificare la tabella degli alimenti..circa 700 recs, ergo converto in float alla lettura, questa funziona sembra:
Codice: [Seleziona]
"SELECT temporanea.ALIMENTO,COUNT(temporanea.ALIMENTO) as 'N', temporanea.GRAMMI FROM temporanea GROUP BY temporanea.ALIMENTO ORDER BY temporanea.ALIMENTO asc"


per i grammi totali moltiplico il valore dei grammi della singola riga del recordset per l'N corrispettivo, devo spuntare ma sembra che va

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #8 il: 03 Ottobre 2010, 22:33:25 »
Urka rileggendo bene, cosa che non ho fatto prima, mi sono accorto di aver scritto un sacco di c.....e  ;D

Codice: [Seleziona]
mysql = "SELECT temporanea.ALIMENTO, COUNT(temporanea.ALIMENTO) as Comprare, SUM(temporanea.GRAMMI) As Gr FROM temporanea GROUP BY ALIMENTO ORDER BY ALIMENTO asc"

in teoria cosi' funziona, l'unico dubbio mi rimane sul fatto che il campo GRAMMI sia string e non numerico

ha vedo che avevi gia' risolto, meglio cosi' :)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Conteggio del numero di records con lo stesso campo testo
« Risposta #9 il: 03 Ottobre 2010, 22:38:05 »
Urka rileggendo bene, cosa che non ho fatto prima, mi sono accorto di aver scritto un sacco di c.....e  ;D

Codice: [Seleziona]
mysql = "SELECT temporanea.ALIMENTO, COUNT(temporanea.ALIMENTO) as Comprare, SUM(temporanea.GRAMMI) As Gr FROM temporanea GROUP BY ALIMENTO ORDER BY ALIMENTO asc"

in teoria cosi' funziona, l'unico dubbio mi rimane sul fatto che il campo GRAMMI sia string e non numerico

ha vedo che avevi gia' risolto, meglio cosi' :)

la prima lista della spesa :P
funziona...comunque con la conversione va tutto ok, utilizzo cfloat(replace(texbox.text,",","."))

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: [Risolto] Conteggio del numero di records con lo stesso campo testo
« Risposta #10 il: 04 Ottobre 2010, 19:55:07 »
Nel report del tuo programma c'è SICURAMENTE un errore. La quantità del VINO va corretta a 800 ml, non 80! Minimo...  :2birre:
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] Conteggio del numero di records con lo stesso campo testo
« Risposta #11 il: 04 Ottobre 2010, 20:43:44 »
Ben detto!! :2birre:

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] Conteggio del numero di records con lo stesso campo testo
« Risposta #12 il: 04 Ottobre 2010, 22:04:01 »
Nel report del tuo programma c'è SICURAMENTE un errore. La quantità del VINO va corretta a 800 ml, non 80! Minimo...  :2birre:

errore...è tutto riportato in grammi e non i ml, tutti gli alimenti sono catalogati secondo la teoria della zona