Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Query inser into no inserta el valor correcto [mySQL]

Estas en el tema de Query inser into no inserta el valor correcto [mySQL] en el foro de Mysql en Foros del Web. Hola Antes de nada gracias por la ayuda. Tengo la siguiente sentencia: Código: SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS ...
  #1 (permalink)  
Antiguo 18/07/2012, 03:58
 
Fecha de Ingreso: julio-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Query inser into no inserta el valor correcto [mySQL]

Hola

Antes de nada gracias por la ayuda.

Tengo la siguiente sentencia:

Código:
SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS tp WHERE p.id_tipoperfil = ( SELECT distinct tp.id_tipoperfil FROM tipo_perfil AS tp, perfiles as p WHERE tp.Descripcion ='Leer' ) AND p.perfil ='Editor'
En este caso me devuelve como resultado el valor 6. Esta sentencia devuelve siempre un integer.



He creado la tabla TEMP con un único campo de tipo INT, id_perfil.

Bien, si yo intento insertar el valor de la sentencia anterior de esta manera:

Código:
INSERT INTO TEMP (id_perfil) VALUES ("SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS tp WHERE p.id_tipoperfil = ( SELECT distinct tp.id_tipoperfil FROM tipo_perfil AS tp, perfiles as p WHERE tp.Descripcion ='Leer' ) AND p.perfil ='Editor'")
No da error, incluso inserta un registro, pero en el campo id_perfil me pone como valor 0, cuando en este caso debería ser 6.



No sé porque ocurre .



Podrías echarme un cable?

P.D.: también he probado de quitar las " de la SELECT y también utituirlas con ' pero en estos casos si que da error:

debug : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS tp' at line 1{"success":false,"error":"
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS tp' at line 1<\/div>"}

Gracias a tod@s


Gracias
  #2 (permalink)  
Antiguo 18/07/2012, 05:34
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Query inser into no inserta el valor correcto [mySQL]

mmm, creo que ocurre que al meter la subselect entre comillas, la interpreta como un string y te la convierte a 0. Es decir, .... VALUES ("en un lugar de la mancha..") te daria el mismo resultado.
Tendrias que pelear con la opción sin comillas

Cita:
INSERT INTO TEMP (id_perfil) VALUES (SELECT distinct p.id_perfil FROM perfiles AS p, usuarios AS u, tipo_perfil AS tp WHERE p.id_tipoperfil = ( SELECT distinct tp.id_tipoperfil FROM tipo_perfil AS tp, perfiles as p WHERE tp.Descripcion ='Leer' ) AND p.perfil ='Editor')
tambien puedes probar de poner TEMP así `TEMP`, aunque dudo sea tu problema.

Saludos.
  #3 (permalink)  
Antiguo 18/07/2012, 05:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Query inser into no inserta el valor correcto [mySQL]

Código MySQL:
Ver original
  1. INSERT INTO TEMP (id_perfil)
  2. SELECT DISTINCT p.id_perfil
  3. FROM perfiles p
  4.     INNER JOIN usuarios u ON p.perfil = u.perfil
  5.     INNER JOIN tipo_perfil tp  ON tp.id_perfil = p.id_perfil
  6.     tp.Descripcion ='Leer'
  7.     AND  p.perfil ='Editor';
Estoy suponiendo los nombres de los campos en la relación. El la consulta no resultan claros.
Ten en cuenta que la coma como sinónimo de JOIN únicamente funciona bien si los campos relacionados en las tablas tienen exactamente el mismo nombre, para el mismo dato.
Si existen columnas que tengan el mismo nombre, pero que pertenezcan a datos distintos, MySQL intentará relacionarlos, creando resultados erróneos, e incluso productos cartesianos.
Es siempre mejor usar INNER JOIN, con su correspondiente ON y relacionar los campos en forma específica.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/07/2012, 06:23
 
Fecha de Ingreso: julio-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Query inser into no inserta el valor correcto [mySQL]

Gracias oscartt67 y gnzsoloyo.
Voy a probar las 2 opciones, aunque creo que lo de quitar las "" ya lo hice y me daba error, pero voy a probar y enseguida os pongo el resultado.
  #5 (permalink)  
Antiguo 18/07/2012, 09:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Query inser into no inserta el valor correcto [mySQL]

@armonick:

Tuve que borrar tu último post ya que el sitio donde tenías las imágenes marcaba error por MalWare, por favor vuelve a ponerlo pero hospeda tus imágenes en otro sitio para que no causen error en el foro.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:56.