Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Help per query sql

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

Help per query sql

Messaggioda DilanDog » ven apr 15, 2005 2:13 pm

Qualcuno di voi sa se è possibile e come si fa ad utilizzare il risultato di una query di aggregazione come filtro per la query stessa?

Esempio:

SELECT Campo1, Count(Campo1) as ConteggioCampo1
FROM miatabella
GROUP BY Campo1

Questa è la query. In pratica vorrei che mi restituisse solamente dati in cui ConteggioCampo1 sia maggiore di 1. Ho provato a scrivere
semplicemente così:

SELECT Campo1, Count(Campo1) as ConteggioCampo1
FROM miatabella
WHERE CaonteggioCampo1>1
GROUP BY Campo1

Ma ricevo un errore.

Qualche suggerimento? [cry]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Zane » dom apr 17, 2005 3:55 pm

Uhmm, non ho ben capito: secondo me stai confondendo COUNT (che conta il numero di record del recordset) con SUM (che somma il contenuto di tutti i campi specificati).

Se così nn fosse proprio nn ho capito [?][?]
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda DilanDog » dom apr 17, 2005 6:23 pm

Zane ha scritto:Uhmm, non ho ben capito: secondo me stai confondendo COUNT (che conta il numero di record del recordset) con SUM (che somma il contenuto di tutti i campi specificati).

Se così nn fosse proprio nn ho capito [?][?]


Cerco di spiegarmi meglio: immagina di avere una colonna contenente risultati numerici ed in cui ogni record dovrebbe contenere un valore univoco. Purtroppo questo compito è stato erroneamente affidato al software invece di utilizzare un indice. Il risultato è che potrebbero esistere alcuni record con il valore di questo campo duplicato e l'unico modo che mi è venuto in mente per scoprire quali sono questi record è la query che ho scritto sopra. In questo modo la dove vedo il valore di COUNT(CAMPO1) >1 significa che c'è un valore duplicato.
Il tutto funziona correttamente, l'unico problema è che vorrei filtrare i risultati di questa query per avere solamente i record con COUNT(Campo1) >1 e da qui arriviamo alla mia domanda: esiste un modo di includere nel filtro WHERE di una query il risultato di un'espressione di aggregazione, in questo caso COUNT (ma potrebbe essere anche SUM o qualunque altra espressione) ?

Spero di essermi spiegato meglio.... altrimenti dimmi che ci riprovo [:-H]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano


Messaggioda Zane » lun apr 18, 2005 9:59 pm

Ah, ok, ora penso di aver capito!

Prova ad utilizzare HAVING
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda DilanDog » mar apr 19, 2005 4:11 pm

Zane ha scritto:Ah, ok, ora penso di aver capito!

Prova ad utilizzare HAVING


Perfettooooooo, grande, proprio quello che stavo cercando! [applauso]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Zane » mar apr 19, 2005 9:25 pm

Ottomo, felice di esserti stato utile yyy
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising