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

Asignar consulta a una variale

Estas en el tema de Asignar consulta a una variale en el foro de Mysql en Foros del Web. Siempre me he preguntado porque en algunos casos sirve el into Tengo esta consulta y me va bien: select id into id_pais from pais where ...
  #1 (permalink)  
Antiguo 14/02/2011, 11:24
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 11 meses
Puntos: 3
Asignar consulta a una variale

Siempre me he preguntado porque en algunos casos sirve el into

Tengo esta consulta y me va bien:
select id into id_pais from pais where pais=f;
insert into usuarios values('',a,b,c,d,e,id_pais,g);

select usuarios.id into id from usuarios
inner join login on usuarios.id_login=login.id and login.id=piduser;

pero tengo esta otra y no funciona :

select corporacion.id into id_corp from corporacion
inner join usuarios on usuarios.id=corporacion.id_usuario and usuarios.id_login=p_id;

create procedure ps_ingresar_sucrusal(in nombre varchar(100), in direccion varchar(300), in telefono numeric(15),
in id int)
BEGIN
declare p_nombre varchar(100);
declare p_direccion varchar(300);
declare p_telefono numeric(15);
declare p_id int;
declare id_corp int;
set p_nombre=nombre;
set p_direccion=direccion;
set p_telefono=telefono;
set p_id=id;

select corporacion.id into id_corp from corporacion
inner join usuarios on usuarios.id=corporacion.id_usuario and usuarios.id_login=p_id;

insert into sucursales values('',p_nombre,p_direccion,p_telefono,id_corp) ;
end;


por que?
  #2 (permalink)  
Antiguo 14/02/2011, 13:03
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Asignar consulta a una variale

Holas alexanderm

¿Has hecho la consulta sin el INTO variable? Me refiero a que podría ocurrir que te esté devolviendo más de un registro...

Saludos.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 14/02/2011, 18:54
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Asignar consulta a una variale

Si la he hecho pero me da como resultado 1 unico valor y esa es la idea aunque al parecer en el procedimiento me da varios porque tengo este mensaje Result consisted of more than one row.
  #4 (permalink)  
Antiguo 15/02/2011, 04:31
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Asignar consulta a una variale

¿Que error te da? En principio parece correcto, más si dices que has comprobado que la consulta sólo te devuelve un registro (aunque en la propia consulta deberías obligar a que sólo te devuelva uno por si acaso, por si en el futuro cambian los datos, por ejemplo)

P.D. En el ON del INNER JOIN es mucho mejor poner primero la primera tabla, o sea, en tu consulta cambiar

on usuarios.id=corporacion.id_usuario

por

on corporacion.id_usuario=usuarios.id

Se que no tiene que ver con el tema, pero crei interesante comentarlo.
  #5 (permalink)  
Antiguo 15/02/2011, 05:20
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, 5 meses
Puntos: 2658
Respuesta: Asignar consulta a una variale

Si te está diciendo que devuelve más de un registro, es que con lo valores pasados como parámetro al menos te está devolviendo dos (o más). MySQL no se equivoca en eso.
Primero verifica la unicidad delos datos, es decir, con los mismos valores, realiza una consulta manualmente con la interfaz que estés usando (phpMyAdmin, Navicat, Workbench).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/02/2011, 08:06
Avatar de alexanderm  
Fecha de Ingreso: mayo-2010
Mensajes: 50
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Asignar consulta a una variale

Ya he solucionado el problema y no encontre la solucion, solo elimine la base de datos reinicie la pc y cree las tablas, las vistas y los procedimientos nuevamente y listo todo funciono.
Creo que era cosa del navicat.

muchas gracia por su ayuda.. :)

Etiquetas: asignar
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 02:24.