Newsgroup: it.comp.appl.access
Titolo: Match tabelle

Salve a tutti vi spiego brevemente il mio problema:
Ho un db 2 tabelle dove mi sono importato il mio inventario e il
catalogo con dei dati una primadel rappresentante.
Le tabelle sono cosi:
Inventario
Ci sono 2 campi
Modello     Taglia
10             41
10             42
10             43
11             39
11             40
Mentre il catalogo
Ci sono 35 campi
Modello     Taglia
10              40      41   42   43   44
11              39      40   41    45
Io dovrei ottenere un match con le differenze tra il mio inventario e
il catalogo del rappresentante
in modo da snellire il mio lavoro.
Grazie a chiunque mi darà una mano.

 11              39      40   41    45
Non ho capito questa tabella... c'e' un campo per ciascuna taglia? E
che dato contiene, questo campo?
Puoi normalizzare la tabella con una query del tipo
SELECT Modello, "39" as taglia, [39] as dato UNION ALL
SELECT Modello, "40" as taglia, [40] as dato UNION ALL
SELECT Modello, "41" as taglia, [41] as dato UNION ALL
(repetita ad libitum o fino ad esaurimento delle taglie)
cia'
Max

Effettivamente non ho descritto bene, per per il catalogo esiste un
campo per ogni taglia, per un massimo di 35 campi.
Modello     T_0     T_0 T_1  T_2   T_3
10              40      41   42   43     44
11              39      40   41   45
12              38      41   42   44
Ciao



Piu' chiaro.... allora normalizzala con
SELECT [Modello], [T_0] as Taglia FROM Catalogo WHERE [T_0] IS NOT
NULL UNION ALL
SELECT [Modello], [T_1] as Taglia FROM Catalogo WHERE [T_1] IS NOT
NULL  UNION ALL
SELECT [Modello], [T_2] as Taglia FROM Catalogo  WHERE [T_2] IS NOT
NULL UNION ALL
Ripetere per tutti i campi fino al 35....
Ah, poi assolda un sicario per eliminare chi ha sviluppato quel
"catalogo" :·)
cia'
Max


Sto provando come mi hai detto ma mi da sempre "Incomplete query"
Ciao

 Sto provando come mi hai detto ma mi da sempre "Incomplete query"
Non hai lasciato "UNION ALL" dopo l'ultimo campo, vero?
cia'
Max

No termina con where [T_35].
Ciao

 No termina con where [T_35].
Eh... where [T_35] cosa?
Where [T_35] is not null !!!!
cia'
Max


Si finisce con "Where [T_35] is not null".Grazie ho risolto. Ho
provato su un'altro pc ed ora funziona.
Ora se volessi aggiungerci un campo e provare  a fare il match ?

 Ora se volessi aggiungerci un campo e provare  a fare il match ?
Cosa intendi?
cia'
Max

Nella tabella catalogo c'è un campo colore , vorrei aggiungerci questo
campo.
E dopo vorrei fare il confronto con la tabella inventario.
Grazie

 E dopo vorrei fare il confronto con la tabella inventario.
Salvi la query di unione e la utilizzi come se fosse una normalissima
tabella.
cia'
Max

OK grazie mille

Ho fatto quasi tutto.
Ma non riesco a fare la differenza tra catalogo ed inventario.
Metto il join tra le 2 tabelle ma non riesco a vedere la differenza.


Vedere.
SQL.
cia'
Max

SELECT inve.model, inve.taglia, inve.colore
FROM new_cata INNER JOIN inve ON (new_cata.model = inve.model) AND
(new_cata.taglia = inve.taglia)
GROUP BY inve.model, inve.taglia, inve.colore
HAVING (((inve.taglia) Like "yes"));
dove inve è l'inventario e new_cata è il nuovo catalogo.
inve.taglia è il campo dei prodotti che ho avuto e sono finiti, quindi
ho messo il valore yes.
Ora io vorrei avere le differenze tra l'inventario e il catalogo.
Ciao e grazie



Cosi' ti succede un casino (non hai linkato il colore, in questo modo
ottieni tutte le possibili combinazioni Colore inventario/Colore
catalogo).
Non ti viene fuori niente perche' in catalogo in [taglia] avrai 39,
40, 41 ecc, ma non avrai mai "YES", pertanto il join E la condizione
HAVING non sono mai soddisfatte entrambe.
Secondo me, nel tuo inventario manca un campo "quantità".
Infine, al posto di un INNER JOIN ti serve un LEFT JOIN, per vedere
tutto il catalogo, con di fianco le quantita' che TU hai in magazzino
(ma forse non ho capito quello che ti serve)
SELECT New_Cata.model, New_Cata.taglia, New_Cata.colore,
nz(Inve.Quantita)
FROM new_cata LEFT JOIN inve ON (new_cata.model = inve.model) AND
(new_cata.taglia = inve.taglia) AND (New_cata.Colore=Inve.COlore)
cia'
Max