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

[SQL] Query annidata ?

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

[SQL] Query annidata ?

Messaggioda yeah782000 » mar gen 25, 2005 2:43 pm

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 !
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda GoNZo » mar gen 25, 2005 3:44 pm

In effetti un po' poco chiaro...
Il pick-up di Chuck Norris è talmente grosso che come ruota di scorta ha una Toyota Yaris
Avatar utente
GoNZo
Senior Member
Senior Member
 
Messaggi: 369
Iscritto il: mar nov 04, 2003 2:06 pm
Località: Lombardia

Messaggioda yeah782000 » mar gen 25, 2005 3:53 pm

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]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am


Messaggioda Robby78 » mar gen 25, 2005 3:56 pm

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....
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda GoNZo » mer gen 26, 2005 9:39 am

Concordo...
Il pick-up di Chuck Norris è talmente grosso che come ruota di scorta ha una Toyota Yaris
Avatar utente
GoNZo
Senior Member
Senior Member
 
Messaggi: 369
Iscritto il: mar nov 04, 2003 2:06 pm
Località: Lombardia

Messaggioda yeah782000 » mer gen 26, 2005 12:06 pm

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 ?
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » mer gen 26, 2005 12:21 pm

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?
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer gen 26, 2005 7:54 pm

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 ?
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda yeah782000 » mer gen 26, 2005 8:07 pm

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?]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » gio gen 27, 2005 8:38 am

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]
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » gio gen 27, 2005 1:04 pm

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]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » gio gen 27, 2005 1:43 pm

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
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » gio gen 27, 2005 1:46 pm

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!!!!
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

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