10 messaggi dal 27 agosto 2004
è già da un paio di settimane che ci sto smadonando.

allora per semplificare l'esempio:
ho 2 tabelle su un db access 2000.

tabella: nome
campi : id,nome,prof,data

tabella: cognome
campi : id,nome

il risultato che voglio ottenere è una lista di tutti i record della tabella nome che hanno una data specifica e di tutti i nomi presenti nella tabella cognome.

la sintassi che sto utilizzando è la seguente:

sqlString = "SELECT * FROM nome " &_
" right join cognome on nome.nome=cognome.nome "

ora se imposto where nome.data='xx/xx/xx'
il risultato che ottengo sono solo i recordo della tabella nome con
la data specificata senza i campi null della tabella cognome.
sto sbagliandon io ad impostare la query ho c'e una via d' uscita più semplice??

tenete presente che il risultato deve produrre una lista dove vengano riportati tutti i nomi della "tabella cognome" e dove ci siano i dati relativi della "tabella nome" di una specifica data.
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
akin <akin> ha scritto:
tenete presente che il risultato deve produrre una lista dove vengano riportati tutti i nomi della "tabella cognome" e dove ci siano i dati relativi della "tabella nome" di una specifica data.

Con il right join tu prendi tutti i record della tabella cognomi.
Più semplicemente così, non funziona?

select * from nomi n inner join cognomi c on n.nome=c.nome
where n.[data]=#dd/mm/aaaa#

Ciao
10 messaggi dal 27 agosto 2004
nunka idem come sopra.
mi compaiono solo i record della "tabella nomi" con la data che ho selezionato, senza i record della "tabella cognomi.nome" che hanno corispondenza nulla.

ti faccio un esempio:

io ho nella tabella nomi:

nome - prof - data
giggio - casalingo - 21/04/03
pippo - lapdacest - 22/05/03
paolino - lucidapipe - 23/06/04

nella tabella cognomi

nome
giggio
pippo
paolino
franceschino

se imposto la query per il giorno 21/04/03 il risultato che voglio ottenere è:

giggio - casalingo - 21/04/03
pippo - null - null
paolino - null - null
franceschino - null - null

ripeto è solo un esempio la query va inserita in un sistema relazionale ben più complesso e che per motivi sintetici ho semplificato con questo esempio.
Modificato da akin il 16 settembre 2005 18.45 -
823 messaggi dal 05 agosto 2002
Secondo me non ti è chiaro come funzionano le join, dove e perchè aggiungono dei null ...
Quello che vuoi si ottiene con una query tipo questa (la sintassi è per mysql 5, ma dovresti riuscire ad adattarla):

select cognomi.nome, a.professione, a.data from (
select nomi.nome, nomi.professione, nomi.data from nomi where data = '2003-04-21') a
right outer join cognomi on a.nome = cognomi.nome


A proposito, questa è una domanda relativa ai db, secondo me sarebbe meglio postarla nel forum "sqlserver e mysql"

Stick to your guns.
Formazione su MySQL o Firebird? Contattami!
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Se vuoi chevengano accettate anche date nulle:
select * from nomi n inner join cognomi c on n.nome=c.nome
where n.[data]=#dd/mm/aaaa# or n.[data] is null

Ciao
10 messaggi dal 27 agosto 2004
GRAZIE DELL'AIUTO mo provo.
in ogni caso ho ancora molto da imparare sulle join e sull' sql in generale quindi ogni consiglio e ben accetto.
avevo il sospetto che si dovessero fare delle query annidate ma non sapevo da dove iniziare.
823 messaggi dal 05 agosto 2002
andrewz: prova le query prima di postarle, altrimenti è inutile.

akin: quando hai di questi dubbi è meglio postare anche un piccolo script sql in modo che chi vuole rispondere possa ricrearsi le tabelle e caricarle con qualche dato di esempio, la descrizione che hai inserito è utile, ma un po' scomoda ...

Stick to your guns.
Formazione su MySQL o Firebird? Contattami!
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
pabloj <pabloj> ha scritto:
andrewz: prova le query prima di postarle, altrimenti è inutile.

Cos'ha si sbagliato? La sintassi è corretta.

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.