Forums:
Hola amigos:
Necesito insertar los datos de una tabla dentro de una temporal pero no consigo hacerlo. He revisado la documentación de MySQL sobre el tema, lastimosamente no encuentro nada relevante.
Este es el script que lo debo correr con PHP. Aquí lo lo envío en SQL. Serviría para presentar un "árbol de datos" con PHP.
Aquí creo la tabla temporal:
CREATE TEMPORARY TABLE temp_arbol (
id_node INT(11) NOT NULL AUTO_INCREMENT,
direcion_nodo VARCHAR(254) NOT NULL DEFAULT '',
profundidad_nodo INT(11) NOT NULL DEFAULT '0',
orden_nodo INT(11) NOT NULL DEFAULT '0',
titulo_nodo VARCHAR(254) NOT NULL DEFAULT '',
nodo_con_hijas TINYINT(4) NOT NULL DEFAULT '0',
PRIMARY KEY (id_node),
KEY id_node (id_node),
KEY direcion_node (direcion_node),
KEY profundidad_nodo (profundidad_nodo),
KEY orden_nodo (orden_nodo),
KEY titulo_nodo (titulo_nodo),
KEY nodo_con_hijas (nodo_con_hijas)
) TYPE=MyISAM;
luego necesito pasar datos desde otra tabla y aquí es donde tengo el problema. La sentencia SELECT sola, funciona perfectamente
SELECT 1,
concat("X.", rtrim(cuenta_acumulacion)),
cast(nivel as integer),
1,
concat(cuenta, " --> ", nombre),
if(nivel = '4','y'=1,'y'=0)
FROM plan order by cuenta
pero no en combinación con INSERT
INSERT INTO temp_arbol (
direcion_nodo,
profundidad_nodo,
orden_nodo,
titulo_nodo,
nodo_con_hijas)
VALUES (SELECT
concat("X.", rtrim(cuenta_acumulacion)),
cast(nivel as integer),
1,
concat(cuenta, " --> ", nombre),
if(nivel = '4','y'=1,'y'=0)
FROM plan order by cuenta);
Yo se que cuento con ustedes.
Gracias.
Sin VALUES
El INSERT usando como entrada un SELECT se hace sin usar VALUES ;)
drop table borrar1;
create table borrar1 (
codigo char(10),
nombre char(10)
);
--
drop table borrar2;
create table borrar2 (
codigo char(10),
nombre char(10),
edad number(10)
);
--
insert into borrar2 values ('1','pepo',28);
insert into borrar2 values ('2','paul',28);
insert into borrar2 values ('3','maga',25);
--
insert into borrar1 (codigo, nombre)
select codigo, nombre from borrar2;
Debe funcionar con MySQL, pero lo acabo de hacer en mi trabajo (Oracle10g)
------------------------------------------------
Linux User Registered #232544
Jabber : pepo@jabberes.org
Ekiga : pepo@ekiga.net
ICQ : 337889406
GnuPG-key : www.keyserver.net
------------------------------------------------
Linux User Registered #232544
Jabber : pepo@jabberes.org
Ekiga : pepo@ekiga.net
GnuPG-key : www.keyserver.net
Insertando en una tabla temporal con SELECT
Hola!
Como dijo pepo La cosa es que no tenés que utilizar la palabra "VALUES", solo el "SELECT", tu sentencia SQL quedaría así:
INSERT INTO temp_arbol (
direcion_nodo,
profundidad_nodo,
orden_nodo,
titulo_nodo,
nodo_con_hijas)
SELECT
concat("X.", rtrim(cuenta_acumulacion)),
cast(nivel as integer),
1,
concat(cuenta, " --> ", nombre),
if(nivel = '4','y'=1,'y'=0)
FROM plan order by cuenta;
Saludos!