saber - SQL: Insertar en... Valores... Seleccionar
validar insert mysql (4)
Deberá unir las tablas de las que desea realizar la selección.
Aquí hay un recurso sobre las uniones SQL:
www.w3schools.com/sql/sql_join.asp
También puede consultar este libro en PDF gratuito de los chicos de www.simple-talk.com que cubre los conceptos básicos de SQL:
¿Cómo escribo la instrucción INSERT si obtengo los valores de colA de TableX, colB de TableY y colC de TableZ?
por ejemplo: INSERT INTO TableA (colA, colB, colC) VALORES (?,?,?)
¿Alguna idea si es posible?
En respuesta a la respuesta de marc_s, puede consultar desde tablas no relacionadas en una selección ya que:
INSERT INTO TableA
(colA, colB, colC)
SELECT
(SELECT valA FROM TableX WHERE ...),
(SELECT valB FROM TableY WHERE ...),
(SELECT valC FROM TableZ WHERE ...)
INSERT INTO TableA(colA, colB, colC)
SELECT TableX.valA, TableY.valB, TableZ.valC
FROM TableX
INNER JOIN TableY ON :......
INNER JOIN TableZ ON ........
Por supuesto, TableX, TableY y TAbleZ también podrían estar relacionados de alguna otra manera (no INNER JOIN).
Si no puede encontrar ninguna relación entre las tablas EN TODO, también podría hacer tres
SELECT @value1 = valA FROM TableX WHERE ......
SELECT @value2 = valB FROM TableY WHERE ......
SELECT @value3 = valC FROM TableZ WHERE ......
y luego un inserto como este:
INSERT INTO TableA(colA, colB, colC)
VALUES(@value1, @value2, @value3)
Ese es el último recurso, no puede expresar todo en una sola declaración SELECT
.
Bagazo
Insert into TableA (ColA, ColB, ColC) . . .
Deben ser los nombres de las columnas como están en la Tabla A. No hay nada de malo en
Insert into TableA (ColA, ColB, ColC) . . .
Select TableX.Col1, TableY.Col1, TableZ.Col5
From TableX, TableY, TableZ
Where . . .