Newsgroup: it.comp.appl.access
Titolo: Problema stupido con query

Ciao a tutti,
Ho un problema con una query, e probabilmente mi sto perdendo in un bicchiere d'acqua, che prende i dati da 6 tabelle che hanno tutte un campo in comune.
 
Tabella1
Cod_Chiave
QTA 
PREZZO
 
Tabella2
Cod_Chiave
ESISTENZA
 
Tabella3
Cod_Chiave
QTA2
PREZZO2
 
Tabella4
Cod_Chiave
ESISTENZA2
 
Tabella5
Cod_Chiave
QTA3
PREZZO3
 
Tabella6
Cod_Chiave
ESISTENZA3
 
Quello che vado a fare è una semplice join tra tutti i campi chiave delle tabelle.
Il problema è che le Tabelle 1 e 2 contengono sempre dei valori mentre le tabelle 3,4,5,6 possono non avere dei valori ed ovviamente in questo caso la query non mi mostra i valori nemmeno delle tabelle 1 e 2.
 
Se ad esempio la tabella 1 ha i seguenti valori
 
Tabella1
Chiave		QTA 	PREZZO
MELA		5	5
PERA		2	2
SUSINA		6	3	
 
Tabella2
CHIAVE		ESISTENZA
MELA		1
PERA		1
SUSINA		1
 
Ora se tutte le altre tabelle sono popolate non ho problemi... se le altre due tabelle non sono popolate vorrei che mi uscisse fuori qualcosa del genere
 
 
CHIAVE		QTA PREZZO ESISTENZA QTA2 PREZZO2 ESISTENZA2 QTA3 PREZZO3 ESISTENZA3
MELA		5   5      1         0    0       0          0    0       0
PERA            2   2      1         0    0       0          0    0       0
SUSINA		6   3      1         0    0       0          0    0       0
 
Come posso fare? Spero di essermi spiegato bene.
Grazie :)

> ..... Spero di essermi spiegato bene. 
Non molto
 
Non ho capito se Tabella1 oppure Tabella2 ( PRESE SINGOLARMRNTE )
hanno tutte le chiavi ......
 
 
 
 
Se vuoi essere matematicamente certo di avere TUTTE le chiavi nella query allora devi avere 1 tabella che CERTAMENTE contenga TUTTE le chiavi.
 
Se ti manca allora la puoi costruire con una query UNION 
( chiamiamola QUni )
[code]
SELECT Cod_Chiave FROM Tabella1
UNION
SELECT Cod_Chiave FROM Tabella2
UNION
SELECT Cod_Chiave FROM Tabella3
UNION
SELECT Cod_Chiave FROM Tabella4
UNION
SELECT Cod_Chiave FROM Tabella5
UNION
SELECT Cod_Chiave FROM Tabella6
[/code]
 
 
Poi ti fai una query con LEFT JOIN fra QUni e tutte le altre tabelle
 
 
.

 
[cut]

dalla descrizione che fai il problema sembra a monte; hai splittato su N 
tabelle quello che deve stare in una sola.
 
con le informazioni che hai dato la soluzione e' fare una sola tabella in 
cui ci sono tutti i campi che ti servono.
 
per alcune righe alcuni campi potranno avere valore nullo ma questo e' 
una situazione regolarmente gestibile, prevista e non probnlematica in un 
database.
 
 
detto questo, per aiutarti con la tua query serve conoscere la query.
posta il codice sql e vediamo dove sta l'inghippo.
 
 
 
-- 
Paolo opg
 
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--


Grazie per le risposte, dovrei aver risolto con  la soluzione proposta da Mancini (attualmente non ho i dati per verificare). Rispondendo a Paolo so benissimo che la soluzione migliore sarebbe quella di creare una sola tabella con tutti i dati ma purtroppo non è così semplice (l'esempio che ho postato era a puro titolo esemplificativo).
 
Ciao
 
p.s. vi faccio sapere se poi alla fine funziona veramente


Ciao
probabilmente hai fatto un join che prevede l'eguaglianza del campo chiave in tutte le tabelle. Invece devi considerare la tabella "master" (quella che ha certamente tutte le voci), come tabella di "sinistra" e fare i join che prendano tutti i record della tabella sx e solo quelli presenti nelle tabelle dx.
In questo  modo avrai tutti i record e i mancanti di dx renderanno campi null.
Ciao
Alberto