2010-04-21 7 views
7

Necesito encontrar una manera de hacer un INSERT INTO table A pero uno de los valores es algo que proviene de una búsqueda en la tabla B, me permite ilustrarlo.¿Cómo insertar un valor basado en la búsqueda de otra tabla?

I tienen los 2 siguientes tablas:

Tabla A:

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

Tabla B:

B1: String 
B2: Integer Value 

Ejemplo fila de A: { "Valor", 101 , MoreData} Fila de ejemplo de B: {"English", 101}

Ahora, sé que necesito INSERTAR lo siguiente en A {"Value2", "English", MoreData} pero obviamente eso no funcionará porque espera que un entero en la segunda columna no contenga la palabra "inglés", entonces necesito hacer una búsqueda en la Tabla B primero.

Algo como esto:

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

Obviamente, esto no funciona tal cual ...

¿Alguna sugerencia?

Respuesta

6

¿qué tal:

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

no parece funcionar ... se queja de sintaxis cerca SELECCIONAR. Si este es el enfoque estándar, entonces debo tener un error tipográfico en algún lugar (mirándolo ahora). Pero un amigo me acaba de decir lo siguiente "En una cláusula VALUES, solo puedes especificar variables o constantes". Supongo que está equivocado (tiene que haber una forma) – Shaitan00

+0

Tal vez sean los paréntesis alrededor de la parte 'seleccionar ...'? Particularmente en SQL Server no son necesarios allí y posiblemente también son ilegales. Sin embargo, no sé sobre otros productos de servidor. –

1

parece ser más compatible con DBMS sin paréntesis, como se comentó @Andriy M:

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