MySQL - función dentro de insert

   
Vista:

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 06/10/2011 12:09:47
Buenas a todos! En primer lugar decir que estoy empezando con esto del MySQL asi que perdonad si hago algo mal. Os cuento:
Estoy intentado agregar registros de una tabla a otra y lo hago con la función insert into. Hasta aquí todo bien, el problema es que en un la tabla destino tengo varios campos para número de cuenta y en la origen sólo uno. Sé que hay función para extraer los caracteres de la izquierda o de la derecha pero no se cómo coger los del centro.
Si alguien pudiera ayudarme le estaría agradecido.

Saludos,
Guillermo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 06/10/2011 12:13:18
Perdonad creo que lo tengo es:
SELECT SUBSTRING
Ahora el problema es que lo haga bien jejeje.

Gracias de todas formas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 06/10/2011 12:24:48
Lo que decía ahora el heidi SQL me da error en la sintaxis en la propia funcion SELECT SUBSTRING. La sentencia queda tal que así:

INSERT INTO `Empresas_definitivas_copy` (idsocio, empresa, idasociacion, centro, pyme, direccion, cp, poblacion, provincia, emailempresa,cif, pmedia, telefono, `fax`,`cc_entidad` )
SELECT Cooperativas.Codigo, Cooperativas.Nombre, "800", "1", "N", Cooperativas.Direccion, Cooperativas.Codpos, Cooperativas.Poblacion, Cooperativas.Provincia, Cooperativas.email, Cooperativas.Cif, "0", Cooperativas.Telefono, Cooperativas.`Fax`, SELECT SUBSTRING (`CCC`,1,4)
FROM Cooperativas;

Por favor ayudadme que aquí si que me quedo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 06/10/2011 16:39:26
También he probado haciéndolo select a select pero nada:
INSERT INTO `Empresas_definitivas_copy` (idsocio, empresa, idasociacion, centro, pyme, direccion, cp, poblacion,
provincia, emailempresa,cif, pmedia, telefono, `fax`,`cc_entidad` )
SELECT Codigo FROM Cooperativas, SELECT Nombre FROM Cooperativas, "800", "1", "N", SELECT Direccion FROM Cooperativas,
SELECT Codpos FROM Cooperativas, SELECT Poblacion FROM Cooperativas, SELECT Provincia FROM Cooperativas, SELECT email FROM Cooperativas,
SELECT Cif FROM Cooperativas, "0", SELECT Telefono FROM Cooperativas, SELECT `Fax` FROM Cooperativas,
SELECT SUBSTRING (`CCC`,1,4) FROM Cooperativas
;
Por favor ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Pedro (54 intervenciones) el 06/10/2011 22:06:24
Guillemo

el select substring() se usa asi cuando vos lo ejecutas en forma de comando

cuando lo usas dentro de un insert sacale el select, deja solo el substing()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por joseluis2112 (124 intervenciones) el 06/10/2011 22:09:47
Prueba Asi.

INSERT INTO `Empresas_definitivas_copy` (idsocio, empresa, idasociacion, centro, pyme, direccion, cp, poblacion, provincia, emailempresa,cif, pmedia, telefono, `fax`,`cc_entidad` )
SELECT Cooperativas.Codigo, Cooperativas.Nombre, "800", "1", "N", Cooperativas.Direccion, Cooperativas.Codpos, Cooperativas.Poblacion, Cooperativas.Provincia, Cooperativas.email, Cooperativas.Cif, "0", Cooperativas.Telefono, Cooperativas.`Fax`,

SUBSTRING elcampoquevasacortar,1,4)

no es necesario el SELECT, SUBSTRING es una funcion y devuelve el String.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 07/10/2011 13:39:05
Gracias por la yuda pero le quito el SELECT y me sigue dando error. La sentencia queda tal que así:

INSERT INTO `Empresas_definitivas_copy` (idsocio, empresa, idasociacion, centro, pyme, direccion, cp, poblacion,
provincia, emailempresa,cif, pmedia, telefono, `fax`,`cc_entidad`)
SELECT
(SELECT Codigo FROM Cooperativas), (SELECT Nombre FROM Cooperativas), "800", "1", "N", (SELECT Direccion FROM Cooperativas),
(SELECT Codpos FROM Cooperativas), (SELECT Poblacion FROM Cooperativas), (SELECT Provincia FROM Cooperativas), (SELECT email FROM Cooperativas),
(SELECT Cif FROM Cooperativas), "0", (SELECT Telefono FROM Cooperativas), (SELECT `Fax` FROM Cooperativas), SUBSTRING (`CCC`,1,4) FROM Cooperativas
;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por martin (1 intervención) el 08/10/2011 02:10:54
La sintaxis que aplicaste es erronea,cuando queres insertar datos desde una tabla o consulta a una tabla solo puede haber un select principal y es el primero, lo otro que se puede presentar son subconsultas pero que estan contenidas en el select principal y algun UNION, siguiendo tu primer post infiero que buscas algo como el ejemplo siguiente:

INSERT INTO CUENTAS(NroBanco,NroSucursal,NroCliente)
SELECT SUBSTRING(NroCuenta,0,4)AS NroBanco,
SUBSTRING(NroCuenta,5,10)AS NroSucursal,
SUBSTRING(NroCuenta,16,10)AS NroCliente
FROM TablaCuentasViejas;

No se si puse bien los indices del substring, pero tenes que ponerlo segun donde en esa cadena de origen(Donde esta el numero de cuenta viejo) esta cada dato a insertar en el nuevo origen.

Espero que sea mas o menos lo que buscas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 10/10/2011 10:03:31
Muchas gracias por tu ayuda Martin pero no se solucionó.
Haciéndolo como me dices me sigue dando error. Al ejecutarla el HeidiSQL me dice que la función Mibasededatos.SUBSTRING no existe. Así está la sentencia:

INSERT INTO `Empresas_definitivas_copy` (idsocio, empresa, idasociacion, centro, pyme, direccion, cp, poblacion, provincia, emailempresa,cif, pmedia, telefono, `fax`,`cc_entidad`)
SELECT Codigo, Nombre , "800", "1", "N", Direccion, Codpos, Poblacion, Provincia, email , Cif, "0", Telefono, `Fax`, SUBSTRING (`CCC`,0,4) AS `cc_entidad` FROM Cooperativas
;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

función dentro de insert

Publicado por Guillermo (7 intervenciones) el 10/10/2011 10:24:05
SOLUCIONADO!!!
Tras darle mil vueltas el problema era tan sencillo como es quitar un espacio entre el SUBSTRING y el paréntesis. Es decir yo tenía SUBSTRING (Cooperativas.`CCC`,0,4) y lo correcto es SUBSTRING(Cooperativas.`CCC`,0,4), vaya tela!!
Pues muchas gracias a todos de todas formas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar