Eseguire una insert selezionando dati da due tabelle differenti

domenica 08 maggio 2011 - 23.30

jtpsala Profilo | Senior Member

Un saluto a tutti gli utenti di questo Forum!
Volevo chiedere come è possibile creare una query che inserisca dei dati in una tabella selezionandoli da due altre tabelle diverse.

Utilizzo Sql Server 2005 Express.

Esempio:
La tabella3 dove dovranno essere raggruppati tutti i dati è formata da:
Campi (A, B, C, A1, B1, C1, Progressivo, Record).
La tabella1 da dove devono essere selezionati alcuni dati è formata da:
Campi (A, B, C, Progressivo, Record).
La tabella2 da dove devono essere selezionati altri dati è formata da:
Campi(A1, B1, C1, Progressivo, Record).

Il valore del campo Progressivo contenuto nella tabella1 e tabella2 contiene ad esempio 1, 2, 3 e cosi via... Tale valore può essere ripetuto anche in più record (1, 1, 1, 2, 2, ecc...)
Il valore contenuto nel campo Record invece è univoco esempio ogni riga contiene un valore di tipo 01, 02, 03...
------
Progressivo Record
1 01
1 02
1 03
2 01
3 01
3 02
------

Io dovrei nella tabella3 raccogliere in un'unica riga i valori selezionati dalla tabella2 e dalla tabella3 distinti per il campo Progressivo e Record esempio:

----
A B C A1 B1 C1 Progressivo Record
q f g h e f 1 01
q f g h e f 1 02
q f g h e f 1 03
d r h u t u 2 01
e cosi via...

Vi ringrazio tutti in anticipo per la gentile collaborazione.





Pippo

jenga Profilo | Newbie

Quindi la tua chiave è Progressivo - Record

Cosa succede se nella tabella1 esiste la chiave e nella tabella2 no?
I campi A1, B1, C1 della tabella finale che valori devono avere? o non deve comparire il record per quella chiave?

Lo stesso se la situazione è la duale (chiave esistente nella tabella2 e non nella tabella1): cosa deve essere scritto nella tabella3?

--
Igor Brusetti
http://jenga.wordpress.com

jtpsala Profilo | Senior Member

Grazie per aver risposto!
allora nella tabella1 i valori contenuti nei campi Progressivo e Record sono identici a quelli contenuti nella tabella2.
In pratica io dovrei riempire la tabella3 selezionando i valori contenuti nei campi A, B e C della tabella1 che hanno come valore nel campo Progressivo e Record uguali a quelli contenuti nella tabella2 e da quest'ultima importare i valori contenuti nei campi A1, B1 e C1.
Esempio:

Tabella1
Campi:
A, B, C, Progressivo, Record
4 4 4 1 01
4 4 4 1 02
4 4 4 2 01


Tabella2
Campi:
A1, B1, C1, Progressivo, Record
4 4 4 1 01
4 4 4 1 02
4 4 4 2 01

Tabella3
Campi:
A, B, C, A1, B1, C1, Progressivo, Record
4 4 4 4 4 4 1 01
4 4 4 4 4 4 1 02
4 4 4 4 4 4 2 01

Diciamo che il campo Progressivo della tabella1 e tabella2 possono contenere dei identici, mentre sono univoci i valori contenuti nei campi Record.

Spero di essermi spiegato.

Ringrazio in anticipo.

Pippo

jenga Profilo | Newbie

No, non era questa la mia domanda.
Ammettiamo che le tue tabelle 1 e 2 abbiano questi dati:

Tabella1
Campi:
A, B, C, Progressivo, Record
4 4 4 1 01
5 5 5 1 02
6 6 6 2 01

Tabella2
Campi:
A1, B1, C1, Progressivo, Record
3 3 3 1 01
2 2 2 1 02

La tabella 3 deve contenere i dati per Progressivo=2, Record=01 ?

Se deve contenere anche questo record (che esiste solo in una tabella origine) avrai una query del tipo:
SELECT A, B, C, A1, B1, C1, Progressivo, Record
FROM Tabella1
LEFT OUTER JOIN Tabella2
ON Tabella1.Record = Tabella2.record
AND Tabella1.Progressivo = Tabella2.Progressivo

e il risultato sarà il seguente:
A, B, C, A1, B1, C1, Progressivo, Record
4 4 4 3 3 3 1 01
5 5 5 2 2 2 1 02
6 6 6 null null null 2 01

altrimenti va cambiata la JOIN che lega le due tabelle.
--
Igor Brusetti
http://jenga.wordpress.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5