|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Problema con database
Ho un database con due tabelle. La prima tabella (A) contenente tutte le fatture registrate con la chiave composta da 2 campi (num. di registrazione e campo di controllo). La seconda tabella (B), invece contiene le informazioni relative alle fatture messe in pagamento e la chiave è composta da due campi (num. di registrazione e campo di controllo).
Entrambe le tabelle, quindi, hanno le stesse chiavi. Definendo una relazione fra queste due tabelle, in B vengono giustamente inserite le chiavi della tabella A. In questo modo, però, la chiave esterna rispecchia il contenuto della chiave interna..Lo so, è una domanda stupida, ma è corretto? o posso evitare questo "problema" utilizzando la chiave interna della tabella B come chiave esterna della tabella A? Ps. uso mysql e dbdesigner4 |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
|
Quote:
Il database originario è un DB2 ed è strutturato in questo modo: Tabella A +--------------------------------------------------------------------+ |NUM_____|CONTR_____|COD.FORNITORE_____|IMPORTO_____|ALTRI..| +--------------------------------------------------------------------+ |50_______|1_________|5500_______________|2.500,50_____|______| |51_______|0_________|3368_______________|100,18_______|______| |52_______|998_______|5500_______________|1300,10______|______| +--------------------------------------------------------------------+ Tabella B +----------------------------------+ |NUM___|CONTR|DATA___|ALTRI.. | +----------------------------------+ |50_____|1____|30/03/05|________| |52_____|998__|05/02/05|________| +----------------------------------+ Io esporto i dati in un file di testo e li carico in una "replica" fatta in mysql. Creando una relazione fra le tabelle, il risultato è questo: Tabella B +---------------------------------------------+ |NUM__|CONTR|NUM|CONTR|DATA____|ALTRI.. | +---------------------------------------------+ |50____|1____|50__|1_____|30/03/05|_______| |52____|998__|52__|998___|05/02/05|_______| +---------------------------------------------+ |
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Jul 2005
Città: Potenza
Messaggi: 126
|
Quote:
Cmq, se per "mettere in relazione.." intendi fare un join tra le tabelle, il risultato che ottieni è corretto, poichè di default viene utilizzato un join interno (inner join) che mette in relazione tutte le righe di una tabella che sono presenti nell'altra tabella, secondo la chiave specificata, tralasciando le righe che non soddisfano la chiave. In pratica le righe con NUM__ 50 e 52 sono presenti in entrambe le tabelle, percui le visualizzi nel risultato; quella con il NUM__ 51 è presente solo in una e quindi non la visualizzi.. Devi utilizzare un join esterno (outer join..) In pratica per visualizzare tutte le righe della prima tabella, oltre a quelle che soddisfano la relazione con la seconda, dovresti usare una query del tipo.. Codice:
select * from tabella1 left outer join tabella2 on tabella1.num = tabella2.num;
__________________
Un'interfaccia per domarli, un package per trovarli tutti, un riferimento per ghermirli e nel framework incatenarli." Il Signore degli Oggetti
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:31.



















