2010-04-21 5 views
7

Je dois trouver un moyen de faire un INSERT INTO table A mais l'une des valeurs est quelque chose qui vient d'une recherche sur la table B, permettez-moi d'illustrer.Comment insérer une valeur basée sur la recherche d'une autre table?

J'ai les 2 tableaux suivants:

Tableau A:

A1: String 
A2: Integer value coming from table B 
A3: More Data 

Tableau B:

B1: String 
B2: Integer Value 

Exemple ligne de A: { "Valeur", 101 , MoreData} Exemple de ligne de B: {"English", 101}

Maintenant, je sais que j'ai besoin d'INSERT dans A {"Value2", "English", MoreData} mais évidemment ça ne marchera pas parce qu'il attend un entier dans la deuxième colonne pas le mot "English", donc je dois d'abord faire une recherche dans le tableau B.

Quelque chose comme ceci:

INSERT INTO tableA (A1, A2, A3) 
VALUES ("Value2", SELECT B2 FROM tableB where B1="English", MoreData); 

Évidemment, cela ne fonctionne pas comme-est ...

Toutes les suggestions?

Répondre

6

que diriez-vous:

Insert into tableA (a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English") 
+0

ne semble pas fonctionner ... se plaint sur la syntaxe près SÉLECTIONNER. Si c'est l'approche standard alors je dois avoir une faute de frappe quelque part (en regardant maintenant). Mais, un de mes amis vient de me dire ce qui suit: "Dans une clause VALUES, vous ne pouvez spécifier que des variables, ou des constantes". Je suppose qu'il a tort (il doit y avoir un moyen) – Shaitan00

+0

Peut-être que ce sont les parenthèses autour de la partie 'select ...'? Particulièrement dans SQL Server, ils ne sont pas nécessaires là-bas et peut-être même illégale. Je ne sais pas sur les autres produits de serveur, cependant. –

1

Il semble être plus inter-SGBD sans parenthèses, comme @Andriy M a commenté:

insert into tableA (a1, a2, a3) 
select 'value2', b2, moreData from tableB where B1='English' 
Questions connexes