Newsgroup: it.comp.appl.access
Titolo: [long] Problemi col Join di 2 tabelle

Innanzitutto salve a tutti. E` la prima volta che posto qui.
Ho un problema con la gestione di un database. Non sono proprio un
novellino totale, qualcosa ho fatto anche di mediamente complesso anche
se in altri ambienti.
Sto progettando un database per l'azienda presso la quale lavoro e mi
servirebbe fare un join un po' particolare.
ipotizziamo che io abbia 2 tabelle
tbl_operatori
id_operatore - contatore
operatore - testo
tbl_lavorati
id_lavorati - contatore
[...]campi vari
id_operatore - numerico
id_esecutore - numerico
la questione e` questa.
giornalmente carichiamo dei dati in una tabella (che non deve contenere
nuovi record ma solo modifiche ai dati gia` presenti)
poniamo 100 record.
avendo 2 operatori ognuno deve gestire 50 record e fare determinate
modifiche.
fin qui tutto bene.
il nome dell'operatore al quale e` stato assegnato il compito viene
preso da una inner join normalissima cosi` che ogni utente dalla sua
maschera veda solo e soltanto i record che a lui spettano.
a volte capita che qualcuno debba lavorare record di altre persone,
quindi distinguiamo 2 campi.
chi aveva in carico il lavoro
e chi realmente lo ha eseguito.
il problema e` che la tabella coi dipendenti e` una sola
io vorrei evitare di fare 2 tabelle uguali con due join separati
(situazione gia` adottata)
SELECT tbl_lavorati.campo1, tbl_lavorati.campo2,
tbl_operatori.operatore, tbl_esecutori.eseutore
FROM tbl_operatori INNER JOIN (tbl_esecutori INNER JOIN tbl_lavorati ON
tbl_esecutori.id_esecutore=tbl_lavorati.id_esecutore) ON
tbl_operatori.id_operatore=tbl_lavorati.id_operatore;
questa query mi mostra correttamente i 2 campi della mia tabella e i
riferimenti corretti dalle altre 2 tabelle. vorrei che fosse possibile
usare semplicemente il campo operatore della prima tabella mostrandolo
2 volte
in pratica vorrei fare un join dal campo id_operatore della tabella1 ai
campi id_operatore e id_esecutore della tabella2. e` possibile?
scusate la lunghezza ma non sapevo come stringare il tutto per rendere
comprensibile il problema.
grazie mille,
Claudio.

 Innanzitutto salve a tutti. E` la prima volta che posto qui.
Benvenuto!

Se ho capito il tuo problema puoi risolverlo aggiungendo due volte la
tabella operatore nella query,  senza necessità di creare due tabelle,
la query che otterresti sarebbe pressapoco così:
SELECT tbl_lavorati.campo1, tbl_lavorati.campo2,
 tbl_operatori.operatore, tbl_esecutori.Operatore as Esecutore
FROM tbl_lavorati INNER JOIN tbl_operatori ON
tbl_Lavorati.ID_operatore = tbl_operatori.ID_operatore
INNER JOIN tbl_operatori As tbl_esecutori
ON tbl_lavorati.ID_Esecutore = tbl_esecutori.ID_Operatore
la cosa funziona se i campi ID_Operatore e ID_Esecutore della tabella
Tbl_lavoratori sono sempre compilati, se invece a volte uno dei due campi
non è compilato devi trasformare le INNER JOIN in LEFT JOIN
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

Cinzia ha scritto:

ecco, ci avevo provato ma non andavano due inner join. il primo campo
e` sempre compilato (id operatore) il campo esecutore e` uno di quei
campi che possono subire modifica. ed e` generalmente uguale
all'operatore. ma non e` precompilato nella tabella. viene inserito
quando l'operatore esegue il record.
grazie mille, sei stata gentilissima. piu` tardi provo questa
soluzione.
Claudio