io ho la seguente situazione: una tabella 'Fatture' , ha un campo
'ID-intestatario' che rapprsenta
o l'ID del cliente (riferito alla tabella 'Clienti') o l'ID del fornitore
(riferito alla tabella 'Fornitori').
Come posso fare il JOIN alla tabella giusta ('Clienti' o 'Fornitori') ?
Nella tabella 'Fatture', ho un ulteriore campo di tipo stringa che mi indica
il tipo di fattura: vendita, oppure
acquisto. Nel caso di fattura di vendita l'ID-intestatario è riferito a un
cliente, nel caso di fattura
di acquisto, l'ID-intestatario è riferito a un fornitore.
Come posso fare una query che mi estrapoli il cliente (nel caso di fattura
di vendita) o il fornitore (nel caso di fattura di acquisto).
Grazie a tutti per l'aiuto.
--------------------------------
Inviato via http://arianna.libero.it/usenet/
Non ci hai detto che DB stai usando, comunque puoi provare
con una vista dinamica, se il tuo DB lo supporta.
Qualcose del genere:
select *
from (
select 'vendita' as tipo, id, codice, descrizione
from clienti
union all
select 'acquisto', id, codice, descrizione
from clienti
) as clifor
join fatture on clifor.tipo = fatture.tipofattura
and clifor.id = fatture.id_intestatario
ciao
Giacomo
> Come posso fare una query che mi estrapoli il cliente (nel caso di fattura
> di vendita) o il fornitore (nel caso di fattura di acquisto).
>
Io su oracle ho provato una cosa del genere:
select * from (
select fatture.id, fatture.type, clienti.nome
from fatture, clienti
where fatture.id = clienti.id
union
select fatture.id, fatture.type, fornitori.nome
from fatture, fornitori
where fatture.id = fornitori.id
)
where fatture.type = 'CLIENTI';
e mi escono i nomi dei soli clienti.