Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 1 di 1
 
Query su database
655729
655729 Inviato: 17 Set 2006 15:10
Oggetto: Query su database
 

Mio padre mi ha chiesto un aiuto per fare delle ricerche su un database, solo che con Access sto trovando non poche difficoltà...
Il database è composto da due tabelle di cui una con tutti i dati di alcune persone (cognome, nome, data di nascita, codice fiscale, ...) e i crediti di ognuna, e l'altra tabella con tutti gli aventi diritto (questa seconda però solo con cognome, nome e data di nascita). Con Access sono riuscito tramite una query sulla prima tabella per selezionare solo chi ha i crediti necessari e poi con una query a campi non corrispondenti tra la seconda tabella e quest'ultima query ad avvicinarmi al risultato finale cercato, solo che siccome il database non è piccolino riscontro problemi con gli omonimi perché Access mi permette di confrontare solo un campo.
Ho provato anche a farlo per data di nascita il confronto ma esistono sempre dei gemelli che creano problemi. Altra opzione ho fatto due query diverse e poi ho provato ad incrociarle ma escono dei risultati stranissimi.
Adesso la cosa più semplice sarebbe poter confrontare i dati non corrispondenti con due campi di confronto, cosa che con Access non riesco a fare. Voi sapete come posso risolvere questo problema?
Oppure altra soluzione sarebbe il confronto tramite codice fiscale, solo che su una tabella dovrei generare una funzione per crearlo perché non mi viene fornito.
 
656016
656016 Inviato: 17 Set 2006 16:50
 

Tieni presente che in una tabella ci possono essere chiavi multiple per identificare univocamente i record.
Nel tuo caso anche Nome, Cognome, Data di nascita insieme non sarebbero campi utili ad identificare univocamente un record perchè è (difficile ma) plausibile che esistano due omonimi nati lo stesso giorno.
Il codice fiscale non ho capito se è presente in un campo di una tabella o no...
Se mi chiarisci quest'ultima cosa e soprattutto quale risultato vuoi ottenere ti aiuto volentieri icon_wink.gif
Magari scrivimi le tabelle con il nome dei campi che hai a disposizione.
V
 
656858
656858 Inviato: 17 Set 2006 20:43
 

Il codice fiscale lo ho solo da una parte altrimenti facendo un incrocio su quel campo non avrei problemi di duplicati. Mi andrebbe bene anche una qualche utility per poter creare il codice fiscale in un campo.
 
656966
656966 Inviato: 17 Set 2006 21:21
 

Gigiarum ha scritto:
Il codice fiscale lo ho solo da una parte altrimenti facendo un incrocio su quel campo non avrei problemi di duplicati. Mi andrebbe bene anche una qualche utility per poter creare il codice fiscale in un campo.

Se nella seconda tabella hai solo i campi
Nome, Cognome, Data di nascita
allora non puoi crearti anche il campo codice fiscale perchè per farlo avresti bisogno anche del comune di nascita e del sesso.
Nella tabella 2 che chiave primaria hai ?
Se nella tabella 2 avessi come chiave i campi Nome, Cognome, Data di nascita allora potresti accertarti della non presenza di duplicati nel seguente modo:
fai una query con entrambe le tabelle sui campi Nome, Cognome, Data di nascita. Se il numero di record di questa query è uguale al numero di record della seconda tabella allora non ci sono omonimi nati lo stesso giorno.
A questo punto potresti procedere con le altre query di cui hai bisogno (non ho ancora capito alla fine cosa vorresti ottenere)
V
 
657122
657122 Inviato: 17 Set 2006 22:12
 

Il grosso problema è che appunto le due tabelle su cui faccio riferimento non contengono gli stessi nominativi...
Alla fine dovrei ottenere degli elenchi dei nominativi della seconda tabella divisi per i crediti che hanno nella prima.
 
657170
657170 Inviato: 17 Set 2006 22:27
 

Gigiarum ha scritto:
Il grosso problema è che appunto le due tabelle su cui faccio riferimento non contengono gli stessi nominativi...
Alla fine dovrei ottenere degli elenchi dei nominativi della seconda tabella divisi per i crediti che hanno nella prima.

Non basta una query così ?
Codice:
SELECT tabella1.nome, tabella1.cognome, tabella1.credito
FROM tabella1 JOIN tabella2
WHERE tabella1.nome=tabella2.nome AND tabella1.cognome=tabella2.cognome

V
 
657179
657179 Inviato: 17 Set 2006 22:29
 

oops doppio post..
 
657212
657212 Inviato: 17 Set 2006 22:43
 

Il problema è che devo lavorare con Access perché altrimenti avrei potuto fare io un programmino con java ma non ho i dati disponibili nel formato adatto.
 
657585
657585 Inviato: 18 Set 2006 8:35
 

icon_cry.gif icon_cry.gif icon_cry.gif icon_cry.gif


mi fate ricordare l'esame di Basi di Dati all'università!!!

esame mai preso! feci il cretino con la prof! cioè ci provai!!!


icon_lol.gif icon_lol.gif icon_lol.gif icon_lol.gif
 
657721
657721 Inviato: 18 Set 2006 9:35
 

Gigiarum ha scritto:
Il problema è che devo lavorare con Access perché altrimenti avrei potuto fare io un programmino con java ma non ho i dati disponibili nel formato adatto.

Ma scusa da access puoi scrivere anche sql oltre ad usare la creazione automatica delle query.. 0510_confused.gif

V
 
657738
657738 Inviato: 18 Set 2006 9:43
 

per indicare in maniera univoca i record di una tabella ci sono tre modi:

1) o applichi la chiave primaria a più campi (dovresti trovare due omonimi nati nello stesso giorno!! e comunque nelle proprietà inserisci duplicati ammessi)

2) oppure usi una chiave esterna ovvero una terza tabella dove i nomi sono associati ad un codice univoco

3) oppure inserisci un nuovo campo chiave primaria (sia di tipo contatore come te lo metterebbe lui, ma sarebbe meglio Testo o Numerico, così lo gestisci meglio) dove associ un codice (alfa-)numerico alla persona che rimane in questa maniera per forza unica
 
657942
657942 Inviato: 18 Set 2006 11:05
 

fulk ha scritto:
Ma scusa da access puoi scrivere anche sql oltre ad usare la creazione automatica delle query..

A saper programmare in SQL... se te mi puoi scrivere due righe mi faresti un grosso favore! 0510_inchino.gif

88mph ha scritto:
1) o applichi la chiave primaria a più campi (dovresti trovare due omonimi nati nello stesso giorno!! e comunque nelle proprietà inserisci duplicati ammessi)

Io sapevo che la chiave primare deve essere assegnata ad un unico campo... icon_rolleyes.gif Altrimenti come si fa?
 
658201
658201 Inviato: 18 Set 2006 12:27
 

Gigiarum ha scritto:

A saper programmare in SQL... se te mi puoi scrivere due righe mi faresti un grosso favore! 0510_inchino.gif

Te le ho scritte sopra, basta che sostituisci a
Tabella1, Tabella2, Nome, Cognome, Data di nascita
il nome delle tue tabelle e dei tuoi campi
Citazione:
Io sapevo che la chiave primare deve essere assegnata ad un unico campo... icon_rolleyes.gif Altrimenti come si fa?

E' sufficiente (nella tabella in modalità "Visualizzazione struttura") selezionare i campi che vuoi diventino chiave primaria tenendo premuto il ctrl, poi cliccare con il destro e selezionare "Chiave primaria"
V
 
658502
658502 Inviato: 18 Set 2006 13:37
 

no la chiave primaria può comprendere virtualmente una combinazione di campi, si fa così.

Vai in Tabella, poi in Struttura, in struttura selezioni i campi che ti interessano con ctrl oppure shift se adiacenti, quindi premi il pulsante a forma di chiavetta che è in alto...la combinazione dei campi è ora chiave primaria, ovvero verranno considerati univoci i record la cui combinazione dei tre campi selezionati è differente.
 
661238
661238 Inviato: 19 Set 2006 9:38
 

Grazie a tutti, alla fine sono riuscito a sistemare la faccenda modificando il codice SQL della query. Mi sono basato un po' sulle indicazioni di fulk un po' sul codice di altre query simili che avevo provato. icon_wink.gif
 
661620
661620 Inviato: 19 Set 2006 11:32
 

Gigiarum ha scritto:
Grazie a tutti, alla fine sono riuscito a sistemare la faccenda modificando il codice SQL della query. Mi sono basato un po' sulle indicazioni di fulk un po' sul codice di altre query simili che avevo provato. icon_wink.gif

sorry se son arrivato tardi, ma se ti servisse io ho una dispensa su come usare acess in generale (era del mio prof di corso) se ti interesa te la passo tramite mail icon_wink.gif
 
661774
661774 Inviato: 19 Set 2006 12:26
 

Gigiarum ha scritto:
Grazie a tutti, alla fine sono riuscito a sistemare la faccenda modificando il codice SQL della query. Mi sono basato un po' sulle indicazioni di fulk un po' sul codice di altre query simili che avevo provato. icon_wink.gif

Bene, mi fa piacere.
Tieni presente che puoi anche saper usare access ma se non conosci l'sql lo utilizzerai al 10% delle sue potenzialità.
V
 
661777
661777 Inviato: 19 Set 2006 12:27
 

ops doppio post..è già la seconda volta che mi capita in 2 giorni mi sa che c'è qualcosa che non funziona a dovere sul server..vabe

V
 
663178
663178 Inviato: 19 Set 2006 18:15
 

mail inviata icon_wink.gif
 
663201
663201 Inviato: 19 Set 2006 18:19
 

Mk ha scritto:
mail inviata icon_wink.gif

Eh ? 0510_grattacapo.gif

V
 
663253
663253 Inviato: 19 Set 2006 18:33
 

fulk ha scritto:
Mk ha scritto:
mail inviata icon_wink.gif

Eh ? 0510_grattacapo.gif

V


icon_lol.gif icon_lol.gif icon_lol.gif icon_lol.gif ho guardato l'avatar
ma zzo anche voi avere lo stesso casco come avatar icon_lol.gif icon_lol.gif
riinvio la mail all'utente giusto icon_wink.gif
 
663574
663574 Inviato: 19 Set 2006 19:53
 

Mk ha scritto:

icon_lol.gif icon_lol.gif icon_lol.gif icon_lol.gif ho guardato l'avatar
ma zzo anche voi avere lo stesso casco come avatar icon_lol.gif icon_lol.gif
riinvio la mail all'utente giusto icon_wink.gif

Aaaah adesso ho capito!
Guarda che la mail serviva a Gigiarum, non a me icon_smile.gificon_smile.gificon_smile.gificon_smile.gif

V
 
664232
664232 Inviato: 19 Set 2006 22:54
 

Grazie tante per la mail!
E poi il casco non è uguale, uno è girato a sinistra e uno a destra. icon_razz.gif
 
Mostra prima i messaggi di:





Pagina 1 di 1

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©