Pagina 1 di 1

[SQL] Query annidata ?

MessaggioInviato: mar gen 25, 2005 2:43 pm
da yeah782000
ragazzi scusate... ho un db Access dove sto importando le estrazioni del lotto ...
Se creo una query, ad esempio, per contare quante volte e' uscito il numero 15 sulla ruota di bari posso scrivere:

SELECT Count([estrazioni].ID) AS Conteggio
FROM [estrazioni]
WHERE ((([estrazioni].Bari_1)=15)) OR ((([estrazioni].Bari_2)=15)) OR ((([estrazioni].Bari_3)="15")) OR ((([estrazioni].Bari_4)="15")) OR ((([estrazioni].Bari_5)="15"));

Dove Bari_1 e' il primo estratto di Bari , Bari_2 il secondo e cosi via ...

In questo modo io so quante volte e' uscito un certo numero su una certa ruota...
Volendo pero' realizzare una maschera dove inserire tutte le statistiche di tutti i numeri sulle 10 ruote del Lotto quante query devo fare ??!! [boxed]
Posso fare delle query annidate ?
Cioe' .... Prendendo sempre ad esempio la ruota di bari, se io volessi contare la frequenza di tutti e 90 i numeri devo creare 90 query ?
E se poi volessi farlo x tutte e 10 le ruote significherebbe 90 x 10 = 900 query ???????? Come posso risolvere ?
Eventualmente quante query "regge" Access ?
E quanti record "regge" ?
grazie e scusate se sono stato poco chiaro !

MessaggioInviato: mar gen 25, 2005 3:44 pm
da GoNZo
In effetti un po' poco chiaro...

MessaggioInviato: mar gen 25, 2005 3:53 pm
da yeah782000
GoNZo ha scritto:In effetti un po' poco chiaro...

[:I]

Cerco di spiegarmi meglio...
Allora... Tramite la query postata in precedenza io riesco a sapere quante volte il numero 15 e' uscito sulla ruota di bari ok ?
Io voglio sapere quante volte sono usciti anche gli altri 89 numeri senza pero' creare altre 89 query ?
Va meglio ora ? [:I]

MessaggioInviato: mar gen 25, 2005 3:56 pm
da Robby78
Secondo me ti conviene cambiare la struttura della tabella, poi vedrai che tutto diventa + semplice. Mi spiego: suppongo che la tua struttura sia questa:

ID (contatore)
Data
Bari_1
Bari_2
Bari_n
Roma_1
Roma_n
eccc

io farei

ID (contatore)
ID_Estrazione_Data (un campo numerico che rappresenta la data in formato yyyymmdd (ti servirà per le query))
Nome_Ruota
Numero_Estratto

in questo caso x fare quello che vuoi tu basta fare questa query:

Select Max(Numero_Estratto), max(Nome_Ruota), count(ID) From Tabella Group by Nome_Ruota, Numero_Estratto

Ho compilato tutto in fretta perché nn ho molto tempo... nn ti garantisco che funzioni ma può essere un buono spunto; in particolare probabilmente in max(Nome_Ruota) dovrai sostituire la funzione max con qualche altra funzione di raggruppamento x le stringhe (tipo ucase) che ora nn mi viene in mente....

MessaggioInviato: mer gen 26, 2005 9:39 am
da GoNZo
Concordo...

MessaggioInviato: mer gen 26, 2005 12:06 pm
da yeah782000
perdonatemi ma non vi seguo ragazzi ...
Cominciamo dalla struttura del db.

Io ho organizzato il db con una sola tabella "estrazioni" che ha i seguenti campi:
id_estrazione
data_estrazione
bari_1
bari_2
bari_3
bari_4
bari_5
cagliari_1
cagliari_1
...
...
...
venezia_5

ho quindi un campo per ogni mumeo estratto...

Caro robby mi spieghi meglio la tua struttura... ?
io l'ho creata in quel modo in maniera tale che oltre a calcolare ritardi e frequanze di tutti i numeri sia piu' facile fare anche altri tipi di operazioni ..

tipo prendi il primo estratto di bari e sommalo al 3 estratto di cagliari ...cose del genere insomma ... Dov'e' l'errore ?

MessaggioInviato: mer gen 26, 2005 12:21 pm
da Robby78
L'errore di fondo è che ogni campo deve avere una singola informazione significativa; cioè se chiami un campo bari_2 hai 2 informazioni: il nome della ruota e l'ordine dell'estrazione; nel metodo che usi tu ti diventa terribilmente + complicato trattare le 2 informazioni.
Se ti serve anche l'ordine dell'estrazione del numero all'interno della ruota non devi fare altro che aggiungere un altro campo alla struttura che ti ho suggerito; in questa modo diventerà:

ID (contatore)
ID_Estrazione_Data (un campo numerico che rappresenta la data in formato yyyymmdd (ti servirà per le query))
Nome_Ruota
Numero_Estratto

ed in +

ID_Estrazione_Ruota


se ad es. oggi esce il numero 5 sulla ruota di Firenze (terzo estratto) compili la tabella in questo modo:

ID (contatore)
ID_Estrazione_Data = 20050126
Nome_Ruota = "Firenze"
Numero_Estratto = 5
ID_Estrazione_Ruota = 3

tutto chiaro?

MessaggioInviato: mer gen 26, 2005 7:54 pm
da yeah782000
scusa robby ... adesso ti seguo ...pero' in questo modo non vado a ripetere molte volte lo stesso tipo di informazione ?
Cioe' inserendo ad esempio un estrazione intera ripeterei nel campo nome_ruote x 5 volte l'informazione "bari" e x 5 volte il codice id della data ..cioe' ad esempio 20050126 ? Ho capito bene ?

MessaggioInviato: mer gen 26, 2005 8:07 pm
da yeah782000
e se creo tre tabelle relazionate fra loro in questo modo ?
Tabella_estrazioni

ID_ESTRAZIONE
DATA_ESTRAZIONE
NUMERO_ESTRATTO
ID_POSIZIONE_ESTRATTO
ID_NOME_RUOTA

Tabella_ruote
ID_NOME_RUOTA
NOME_RUOTA

tabella_posizione_estratto
ID_POSIZIONE_ESTRATTO
POSIZIONE_ESTRATTO

[banned?]

MessaggioInviato: gio gen 27, 2005 8:38 am
da Robby78
yeah782000 ha scritto:e se creo tre tabelle relazionate fra loro in questo modo ?
Tabella_estrazioni

ID_ESTRAZIONE
DATA_ESTRAZIONE
NUMERO_ESTRATTO
ID_POSIZIONE_ESTRATTO
ID_NOME_RUOTA

Tabella_ruote
ID_NOME_RUOTA
NOME_RUOTA

tabella_posizione_estratto
ID_POSIZIONE_ESTRATTO
POSIZIONE_ESTRATTO

[banned?]


quello che dici riguardo alle info duplicate è vero; le tabelle che proponi tu xò sono sbagliate. Se ci fai caso hai il mio stesso numero di campi, quindi non hai risolto un gran che: anzike scrivere Bari 6 volte, scriverai l'ID di Bari 6 volte. A mio parere è fatica sprecata; in questo caso non è utile avere tabelle relazionate. Una tabella relazionata ha senso soltanto se contiene + di 1 informazione o se si ha in previsone qualche ampliamento della struttura; altrimenti tanto vale tenersi l'informazione così com'è. Che stooooooria [afro] [:-D]

MessaggioInviato: gio gen 27, 2005 1:04 pm
da yeah782000
Caro robby ti ringrazio x la tua pazienza !!!
Ho capito finalmente !!! ho anche provato la tua query sul db strutturato pero' come avevo fatto io !!! Il mio proble ae' questo:
io ho preso le estrazioni da questo sito http://estrazioni.interfree.it/
ho fatto copia-incolla su excel e poi da access ho importato i dati ... In questo modo pero' ho una struttura del tipo
id_estrazione
data_estrazione
bari_1
bari_2
bari_3
bari_4
bari_5
cagliari_1
cagliari_1
...
...
...
venezia_5
Come faccio a modificarli in maniera tale da avere una struttura come la tua ? [boxed]

MessaggioInviato: gio gen 27, 2005 1:43 pm
da Robby78
eh... x modificare il database puoi fare in 3 modi: o ti studi un po' di query x importare i dati dalla tua tabella alla nuova struttura o ti fai un programmino che lo fa x te o copi e incolli a mano il tutto... un po' una rottura di scatole

MessaggioInviato: gio gen 27, 2005 1:46 pm
da yeah782000
Robby78 ha scritto:eh... x modificare il database puoi fare in 3 modi: o ti studi un po' di query x importare i dati dalla tua tabella alla nuova struttura o ti fai un programmino che lo fa x te o copi e incolli a mano il tutto... un po' una rottura di scatole


[cry+] [cry+] che caciara!!!!