SQL - Operand should contain 1 column

 
Vista:

Operand should contain 1 column

Publicado por Gonzalo (7 intervenciones) el 18/10/2010 11:36:43
Muy buenas, tengo una duda que llevo con ello 3 días y no lo soluciono. Tengo que insertar datos de una tabla a otra. Me ha ido dando fallos y he ido solucionándolos pero este fallo me tiene loco; aquí os dejo mi query por si alguien me puede echar un cable:

INSERT INTO alava(CONMODIF,
ABNOMB_TIT,
ABAPELL1_TIT,
ABAPELL2_TIT,
ABNOMB_USU,
ABAPELL1_USU,
ABAPELL2_USU,
ABCOMER,
ABTVIA,
ABCALLE,
ABNUM,
CVIA,
CPSVIA,
DPSVIA,
ABPOST,
ABPOBL,
CPOB,
ABPROVIN,
ABTELEF1,
ABTELEF2,
AB_INFO,
ABTERM,
ABACTIV,
ABCOD_IAE,
ABCOD_CNAE,
ABVENTA)
SELECT ( 003_150710_d_t_00_01.CONMODIF,
003_150710_d_t_00_01.ABNOMB_TIT,
003_150710_d_t_00_01.ABAPELL1_TIT,
003_150710_d_t_00_01.ABAPELL2_TIT,
003_150710_d_t_00_01.ABNOMB_USU,
003_150710_d_t_00_01.ABAPELL1_USU,
003_150710_d_t_00_01.ABAPELL2_USU,
003_150710_d_t_00_01.ABCOMER,
003_150710_d_t_00_01.ABTVIA,
003_150710_d_t_00_01.ABCALLE,
003_150710_d_t_00_01.ABNUM,
003_150710_d_t_00_01.CVIA,
003_150710_d_t_00_01.CPSVIA,
003_150710_d_t_00_01.DPSVIA,
003_150710_d_t_00_01.ABPOST,
003_150710_d_t_00_01.ABPOBL,
003_150710_d_t_00_01.CPOB,
003_150710_d_t_00_01.ABPROVIN,
003_150710_d_t_00_01.ABTELEF1,
003_150710_d_t_00_01.ABTELEF2,
003_150710_d_t_00_01.AB_INFO,
003_150710_d_t_00_01.ABTERM,
003_150710_d_t_00_01.ABACTIV,
003_150710_d_t_00_01.ABCOD_IAE,
003_150710_d_t_00_01.ABCOD_CNAE,
003_150710_d_t_00_01.ABVENTA)
FROM 003_150710_d_t_00_01
WHERE 003_150710_d_t_00_01.ABPOBL = 'alava'

Query : INSERT INTO alava(CONMODIF, ABNOMB_TIT, ABAPELL1_TIT, ABAPELL2_TIT, ABNOMB_USU, ABAPELL1_USU, ABAPELL2_USU, ABCOMER, ABT...
Error Code : 1241
Operand should contain 1 column(s)
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000

He probado de todas las maneras y me sigue fallando, haber si se os ocurre algo.
Un saludo
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Operand should contain 1 column

Publicado por Leonardo Josué (1173 intervenciones) el 18/10/2010 17:39:45
Buenos días Gonzalo:

No mencionas qué manejador estás utilizando, pero creo que se trata de MySQL. Tu problema está en el uso de los paréntesis en el select, no tienen razón de ser, cambia tu consulta por esto:

INSERT INTO alava
(
CONMODIF, ABNOMB_TIT, ABAPELL1_TIT, ABAPELL2_TIT, ABNOMB_USU, ABAPELL1_USU, ABAPELL2_USU, ABCOMER, ABTVIA, ABCALLE, ABNUM, CVIA, CPSVIA, DPSVIA, ABPOST, ABPOBL, CPOB, ABPROVIN, ABTELEF1, ABTELEF2, AB_INFO, ABTERM, ABACTIV, ABCOD_IAE, ABCOD_CNAE, ABVENTA
)
SELECT
CONMODIF, ABNOMB_TIT, ABAPELL1_TIT, ABAPELL2_TIT, ABNOMB_USU, ABAPELL1_USU,ABAPELL2_USU, ABCOMER, ABTVIA, ABCALLE, ABNUM, CVIA, CPSVIA, DPSVIA, ABPOST, ABPOBL, CPOB, ABPROVIN, ABTELEF1, ABTELEF2, AB_INFO, ABTERM, ABACTIV, ABCOD_IAE, ABCOD_CNAE, ABVENTA
FROM 003_150710_d_t_00_01
WHERE ABPOBL = 'alava'

Saludos.
Leo.
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

RE:Operand should contain 1 column

Publicado por Gonzalo (7 intervenciones) el 19/10/2010 10:20:09
Gracias Leo, efectivamente era como tu decías... pues vaya chorrada que era y no daba con ello. . El manejador es sqlyog. Un saludo y gracias otra vez
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Operand should contain 1 column

Publicado por Leonardo Josué (1173 intervenciones) el 19/10/2010 17:26:52
jejeje, por lo que comentas en tu post llevabas tres días con este problema... a veces las cosas más sencillas son las que ocasionan más problemas. Me imagino que el problema estuvo en que copiaste y pegaste todo el contenido de tu insert para no equivocarte con los nombres, pero también copiaste los paréntesis.

Como dijo Einstein

"Si quieres resultados distintos, no hagas siempre lo mismo"

saludos.
Leo.
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

RE:Operand should contain 1 column

Publicado por Gonzalo (7 intervenciones) el 27/10/2010 16:38:10
Si gracias al final era una tontería como casi siempre jeje. Leo tengo otro problemilla que no se solucionar haber si puedes echarme una mano. Ya tengo todos los registros agrupados por provincias pero el problema es que ahora tengo registros duplicados que solo varian en el campo telefono y debo agrupar todos los telefonos de una misma persona en su registro y borrar los restantes. Se que hay que hacerlo con la funcion substr pero no consigo que me salga. También le ingresé un campo autoincremental como clave primaria pero no me ayuda demasiado. Haber si se te ocurre algo, un saludo y gracias.
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Operand should contain 1 column

Publicado por Leonardo Josué (1173 intervenciones) el 27/10/2010 21:27:12
Hola Gonzalo... no 'revivas' temas que ya se hayan cerrado o que tengan tiempo de haber sido publicados. Además en tu caso estás haciendo una nueva pregunta, por lo que lo correcto es que inicies un nuevo tema, ojo para la siguiente.

Con respecto a lo que mencionas, no entendí muy bien qué es lo que necesitas, pero me imagino que tienes algo como esto

idPersona|Persona|Telefono
1|Leonardo|555-0001
1|Leonardo|555-0002
1|Leonardo|555-0003
2|Gonzalo|555-0099
2|Gonzalo|555-0098

Puedes hacer lo siguiente:

SELECT idPersona, Persona, GROUP_CONCAT(Telefono) as Telefonos
FROM Personas
GROUP BY idPersona, Persona

Esta consulta te regresa lo siguiente:

idPersona|Persona|Telefono
1|Leonardo|555-0001,555-0002,555-0003
2|Gonzalo|555-0099,555-0098

Es decir, te concatena los registros para teléfono poniendo una coma de separación entre cada uno de los elementos. Si quieres cambiar el tipo de separador checa la sintaxis de la función GROUP_CONCAT para ver cómo puedes hacerlo.

saludos
Leo.
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

RE:Operand should contain 1 column

Publicado por Gonzalo (7 intervenciones) el 28/10/2010 10:18:41
OK Leo perdona soy nuevo en esto de los foros y no lo volveré a hacer.
Te expliqué bastante mal lo que necesito, haber si lo consigo

Tengo registros con los campos nombre, apellido, dirección, Número, dni, telefono etc y en muchas ocasiones los registros están casi duplicados al 100% ya que provienen de la misma persona y solo varía el campo telefono en algunos registros.

ID Nombre apellido direccion numero dni telefono
1 Antonio Fernandez Garcia 3 8483988x 669031258
2 Antonio Fernandez Garcia 3 8483988x 692485191


Lo que necesito es coger el telefono del id 2 para introducirlo en el campo telefono del id1



ID Nombre apellido direccion numero dni telefono
1 Antonio Fernandez Garcia 3 8483988x 669031258+692485191

Así me ahorraría un registro y como este tengo miles.
En teoría no es tan dificil hacer una consulta de este tipo pero estoy aprendiendo y estoy muy perdido. Bueno Leo gracias por tu tiempo, cuando vuelva a postear crearé un nuevo apartado en el foro. Un saludo
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