2016-11-29 3 views
1

J'ai actuellement deux tables comme on le voit dans les images ci-dessous.insérer dans une table à partir d'une autre table en utilisant la mise à jour join ou insérer le serveur SQL

La première table est appelée bottle:

enter image description here

La deuxième table est appelée cases:

enter image description here

Je suis en train d'insérer dans la table des bouteilles où case_id = 0 les valeurs vues dans le tableau des cas (ie case_id = 100, 100, 103, 103 etc.). Ils sont deux tables distinctes et j'essaye de les joindre sans créer des valeurs NULL.

Veuillez me faire savoir si j'ai besoin d'insérer, de joindre ou de mettre à jour. Je le ferais manuellement cependant ces points de données viennent en direct d'un PLC et il y aura beaucoup plus que juste tous les points de données vus ci-dessous.

+0

Pouvez-vous envoyer vos structures de table avec des images sur? – Buddi

+0

'J'essaie de les joindre' ... quelle logique voulez-vous utiliser pour introduire ces nouvelles valeurs, puisqu'il n'y a pas de colonne de jointure explicite? –

Répondre

0

Il n'existe aucune colonne de jointure explicite permettant d'exécuter le UPDATE souhaité. Mais nous pouvons en créer un en rejoignant la valeur du numéro de ligne de chaque table, en utilisant un certain ordre. Dans la requête ci-dessous, je commande le numéro de ligne dans la table bottle en utilisant le bottle_id, et le numéro de ligne dans le tableau cases en utilisant le case_id.

UPDATE t1 
SET t1.case_id = t2.case_id 
FROM 
(
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY bottle_id) rowId 
    FROM bottle t 
) t1 
INNER JOIN 
(
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY case_id) rowId 
    cases t 
) t2 
    ON t1.rowId = t2.rowId 

Cela devrait donner sortie à bottle ressembler à ceci (quelques colonnes omises):

bottle_id  case_id 
1    100 
2    100 
3    103 
4    103 
5    104 
6    104 
7    105 
8    105