2010-07-15 4 views
2

J'ai 2 tables qui n'ont pas de références les unes aux autres et j'essaie de créer une troisième table (pour référence de référence) en sélectionnant des champs des deux tables .SQL: requête de sélection unique à partir de 2 tables non jointives

TableA has an A_ID 
TableB has a B_ID 

Je veux créer le tableau C qui a un 1 à 1 référence entre A_ID à B_ID où A_ID = FirstID et B_ID = SecondID, je ne peux pas joindre les 2 tables parce qu'il n'y a rien en commun.

Quelque chose comme:

Insert INTO [TableC] 
(FirstID, SecondID) 
SELECT 
A_ID As FirstID, 
(Select B_ID From TableB) 
FROM TableA 

Fondamentalement, nous créons une relation en ce moment avec le tableau C pour que nous puissions l'utiliser pour référencer les deux tables à l'avenir en utilisant les leurs papiers d'identité.

+0

Si vous ne pouvez pas joindre les tables car "il n'y a rien de commun", d'où viendront les données pour remplir la table C? – spender

+0

Fondamentalement, nous créons une relation en ce moment avec la table C afin que nous puissions l'utiliser pour référencer les deux tables dans le futur en utilisant leurs ID. – stevenjmyu

+0

Essayez-vous de créer une relation logique entre ces deux tables via une nouvelle troisième table? – Dave

Répondre

8

En supposant TableA et TableB ont vraiment rien en commun, alors ce que vous voulez est le produit cartésien, qui est, pour chaque ligne d'une fois toutes les lignes de B.

INSERT INTO TableC(FirstID,SecondID) 
SELECT A_ID,B_ID 
FROM TableA 
CROSS JOIN TableB 

Peut-être ce que vous voulez vraiment est pour les rejoindre par ROW_NUMBER().

INSERT INTO TableC(FirstID,SecondID) 
SELECT A_ID,B_ID 
FROM (SELECT A_ID,ROW_NUMBER() OVER (ORDER BY whatever) as rownumA FROM TableA) a 
FULL OUTER JOIN (SELECT B_ID,ROW_NUMBER() OVER (ORDER BY whatever) as rownumB FROM TableB) b ON a.rownumA=b.rownumB 
Questions connexes