Newsgroup: it.comp.appl.access
Titolo: Query con clausola RIGHT JOIN.

Ho la query seguente:
SELECT tMesi.nome, tDatiStr.coddip, tDatiStr.stra, ... ecc
FROM tDatiStr RIGHT JOIN tMesi ON tDatiStr.mese = tMesi.n
WHERE (((tDatiStr.anno)=[forms]![mElencoDip]![anno]) AND
((tDatiStr.coddip)=[forms]![mElencoDip]![figlio0].[form].[cod]))
ORDER BY tDatiStr.mese;
Il campo tMesi.nome contiene i nomi dei dodici mesi;
i campi  tMesi.n e tDatiStr.mese contengono i corrispondenti numeri da
1 a 12.
L'idea era di produrre una tabella con dodici righe, una per mese.
Capita che in alcuni mesi la tabella tDatiStr non abbia dati e io
avrei voluto che comparisse ugualmente una riga col nome del mese e
gli altri campi vuoti, mentre mi compaiono solo le righe in cui
tDatiStr ha dei dati.
Sospetto che sia dovuto alla clausola "((tDatiStr.coddip)=[..." ma non
posso farne a meno perché c'è il riferimento alla persona i cui dati
voglio selezionare.
Ringrazio tutti.
Riccardo Baldinotti

 ha scritto nel messaggio 
news:5393a075-da2a-4e75...@a13g2000yqc.googlegroups.com...
Ho la query seguente:
SELECT tMesi.nome, tDatiStr.coddip, tDatiStr.stra, ... ecc
FROM tDatiStr RIGHT JOIN tMesi ON tDatiStr.mese = tMesi.n
WHERE (((tDatiStr.anno)=[forms]![mElencoDip]![anno]) AND
((tDatiStr.coddip)=[forms]![mElencoDip]![figlio0].[form].[cod]))
ORDER BY tDatiStr.mese;
Il campo tMesi.nome contiene i nomi dei dodici mesi;
i campi  tMesi.n e tDatiStr.mese contengono i corrispondenti numeri da
1 a 12.
L'idea era di produrre una tabella con dodici righe, una per mese.
Capita che in alcuni mesi la tabella tDatiStr non abbia dati e io
avrei voluto che comparisse ugualmente una riga col nome del mese e
gli altri campi vuoti, mentre mi compaiono solo le righe in cui
tDatiStr ha dei dati.
Sospetto che sia dovuto alla clausola "((tDatiStr.coddip)=[..." ma non
posso farne a meno perch� c'� il riferimento alla persona i cui dati
voglio selezionare.
Ringrazio tutti.
Riccardo Baldinotti
fai due query in una metti il criterio e poi la unisci con il right join con 
l'altra
ciao
max 

 max
FUNZIONA
Ho fatto una query qXElDipMesi così:
SELECT tDatiStr.mese, tUorg.codice, ... ecc.
FROM ... ecc.
WHERE (((tDatiStr.anno)=[forms]![mElencoDip]![anno]) AND
((tDatiStr.coddip)=[forms]![mElencoDip]![figlio0].[form].[cod]))
ORDER BY tDatiStr.mese;
Ho poi modificato la query qElDipMesi così:
SELECT tMesi.nome, qXElDipMesi.coddip, qXElDipMesi.stra... ecc.
FROM tMesi LEFT JOIN qXElDipMesi ON tMesi.n = qXElDipMesi.mese
ORDER BY tMesi.n;
e va bene.
Ho il sospetto che la soluzione mi fosse balenata in altre occasioni,
ma il caldo di questi giorni, o il degrado dell'età...
Se le parole umane fossero fontenute in serbatoi come l'inchiostro
delle stampanti, avrei finito il serbatoio dei "Grazie". Meno male che
la scorta è infinita e posso dire:
GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE !
Riccardo Baldinotti

 max
FUNZIONA
Ho fatto una query qXElDipMesi cos�:
SELECT tDatiStr.mese, tUorg.codice, ... ecc.
FROM ... ecc.
WHERE (((tDatiStr.anno)=[forms]![mElencoDip]![anno]) AND
((tDatiStr.coddip)=[forms]![mElencoDip]![figlio0].[form].[cod]))
ORDER BY tDatiStr.mese;
Ho poi modificato la query qElDipMesi cos�:
SELECT tMesi.nome, qXElDipMesi.coddip, qXElDipMesi.stra... ecc.
FROM tMesi LEFT JOIN qXElDipMesi ON tMesi.n = qXElDipMesi.mese
ORDER BY tMesi.n;
e va bene.
Ho il sospetto che la soluzione mi fosse balenata in altre occasioni,
ma il caldo di questi giorni, o il degrado dell'et�...
Se le parole umane fossero fontenute in serbatoi come l'inchiostro
delle stampanti, avrei finito il serbatoio dei "Grazie". Meno male che
la scorta � infinita e posso dire:
GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE GRAZIE !
Riccardo Baldinotti
pi� che ringraziare me che pi� prendo e meno do in questo newsgroup bisogna 
ringraziare tutti quelli che costantemente danno il loro aiuto e mi fanno 
venire la voglia di cimentarmi ad indicare nel mio piccolo qualche soluzione 
ai problemi. se tutto il mondo si muovesse secondo lo spirito che c'� qui 
sarebbe un mondo migliore
ciao
Max