Giupin
25-05-2005, 11:52
Ho queste tabelle così relazionate:
Cittadini ############# Nascite ###################
------------- ######## ---------- ##################
| idcittadino..|####|--- 1 | idnascita |#################
| nome.........|####|####|data.......|#################
| cognome....|####|####|idcomune |oo---|#######Comuni
| idnascita....|1----- ####----------- ###|#####-------------
| idresidenza..|oo-----###############|------1| idcomune |
| flaganag.....| ####| ####################| |
-------------- ####|################|----1| descrizione |
##############|#### Residenza ####| -------------
##############|##### -----------###|
##############----1 |idresidenza |###|
################## |idcomune |1---|
################## -------------
cittadini - nascite 1 a 1 tramite idnascita
cittadini - residenza molti a uno tramite idresidenza
nascite - comuni molti a uno tramite idcomune
residenza - comuni molti a uno tramite idcomune
vorrei ottenere per ogni cittadino nato ad una certa data sia la descrizione del comune di nascita che quello di residenza
alla data prescelta mi corrispondono 4 cittadini ma la query che faccio mi restituisce solo 2 record
la query è questa:
SELECT Cittadini.nome, Cittadini.cognome, Nascite.datanascita,
Comuni.descrizione AS comnas, Comuni.descrizione AS comres
FROM Residenza INNER JOIN (Comuni
INNER JOIN (Cittadini
INNER JOIN Nascite ON Cittadini.idnascita = Nascite.idnascita)
ON Comuni.idcomune = Nascite.idcomune)
ON (Residenza.idcomune = Comuni.idcomune) AND (Residenza.idresidenza = Cittadini.idresidenza)
WHERE (((Nascite.datanascita)=#1/1/1900#) AND ((Cittadini.flaganag)=True));
è sbagliata la query o il db è progettato male?
grazie
Cittadini ############# Nascite ###################
------------- ######## ---------- ##################
| idcittadino..|####|--- 1 | idnascita |#################
| nome.........|####|####|data.......|#################
| cognome....|####|####|idcomune |oo---|#######Comuni
| idnascita....|1----- ####----------- ###|#####-------------
| idresidenza..|oo-----###############|------1| idcomune |
| flaganag.....| ####| ####################| |
-------------- ####|################|----1| descrizione |
##############|#### Residenza ####| -------------
##############|##### -----------###|
##############----1 |idresidenza |###|
################## |idcomune |1---|
################## -------------
cittadini - nascite 1 a 1 tramite idnascita
cittadini - residenza molti a uno tramite idresidenza
nascite - comuni molti a uno tramite idcomune
residenza - comuni molti a uno tramite idcomune
vorrei ottenere per ogni cittadino nato ad una certa data sia la descrizione del comune di nascita che quello di residenza
alla data prescelta mi corrispondono 4 cittadini ma la query che faccio mi restituisce solo 2 record
la query è questa:
SELECT Cittadini.nome, Cittadini.cognome, Nascite.datanascita,
Comuni.descrizione AS comnas, Comuni.descrizione AS comres
FROM Residenza INNER JOIN (Comuni
INNER JOIN (Cittadini
INNER JOIN Nascite ON Cittadini.idnascita = Nascite.idnascita)
ON Comuni.idcomune = Nascite.idcomune)
ON (Residenza.idcomune = Comuni.idcomune) AND (Residenza.idresidenza = Cittadini.idresidenza)
WHERE (((Nascite.datanascita)=#1/1/1900#) AND ((Cittadini.flaganag)=True));
è sbagliata la query o il db è progettato male?
grazie