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

consulta en tabla recursiva

Estas en el tema de consulta en tabla recursiva en el foro de Mysql en Foros del Web. Hola amigos dle foro, a ver si me dan una mano. como podria hacer la sgte consulta en una tabla recursiva dodne los datos los ...
  #1 (permalink)  
Antiguo 02/01/2008, 20:11
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 303
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo consulta en tabla recursiva

Hola amigos dle foro, a ver si me dan una mano. como podria hacer la sgte consulta en una tabla recursiva dodne los datos los tengo de la sgte. manera:


Tengo la sgte tabla recursiva


ID - AREA - ORIGEN
1 - A1 -
2 - A2 -
3 - A3 -
4 - A1 - 2
5 - A2 - 1
6 - A3 - 2
7 - A3 - 1
8 - A4 - 4
9 - A4 - 7


Como haria la consulta si desearia solo mostrar aquellos cuyo campo "ORIGEN" es el area A1 (cosiderando que segun la tabla A1 ESTA EN id: 1 y 4) osea deberia filtrarme solo los campos:


ID - AREA - ORIGEN

5 - A2 - 1
8 - A4 - 4

espero me puedan ayudar. Gracias de antemano.
__________________
DESARROLLO Y DISEÑO DE PAGINAS WEB, HOSTING, DOMINIO, TRUJILLO PERU
Diseño web
Trujillo - Perú

Última edición por andresweb; 02/01/2008 a las 20:22
  #2 (permalink)  
Antiguo 03/01/2008, 18:22
Avatar de Akiracr  
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: consulta en tabla recursiva

Creo que lo haces algo asi:

Select * from tabla where (select id from tabla where area='A1') = id;

la verdad no estoy muy seguro voy a revisar al llegar a mi hogar (creo ke ais no funciona pero bueno vale intentar)....

sino busca informacion de cursores en Mysql como en http://dev.mysql.com/doc/refman/5.0/es/cursors.html
  #3 (permalink)  
Antiguo 04/01/2008, 19:35
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 303
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: consulta en tabla recursiva

Gracias Akiracr por la ayuda, lo probare en unos instantes y te cuento que tal me fue.
__________________
DESARROLLO Y DISEÑO DE PAGINAS WEB, HOSTING, DOMINIO, TRUJILLO PERU
Diseño web
Trujillo - Perú
  #4 (permalink)  
Antiguo 05/01/2008, 10:13
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 303
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: consulta en tabla recursiva

Hola Akiracr probe la consulta pero por lastima no funciono, pero antes de probar me parecio que deberia modificar tu consulta y quedo asi:


Select * from tabla where origen=(select id from tabla where area='A1');


Pero al ejecutar me sale el sgte error:

#1242 - Subquery returns more than 1 row


Espeor sus comentarios, quizas haya otra forma de ejecutarla.
__________________
DESARROLLO Y DISEÑO DE PAGINAS WEB, HOSTING, DOMINIO, TRUJILLO PERU
Diseño web
Trujillo - Perú
  #5 (permalink)  
Antiguo 05/01/2008, 10:53
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 303
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: consulta en tabla recursiva

Hola amigos del foro, ya he encontrado la solucion,la consulta estaba bien , solo habia que agregar una simple palabra "ANY" para la subconsulta.

El problema con el error "#1242" era que la subconsulta me botaba muchos registros como era logico, y si no anteponemos a la subconsulta la palabra "ANY" esta no funciona.

La solucion la encontre en la sgte URL:

http://dev.mysql.com/doc/refman/5.0/...ry-errors.html

Por la tanto mi consulta quedo de la sgte manera:


Select * from tabla where origen= ANY(select id from tabla where area='A1');

y en el caso real de mi tabla seria asi:


select * from ingresos_salidas where ing_origen= ANY (Select ing_id from ingresos_salidas where area_id='1' and ing_salio='1' and ing_vendido='0' and ing_eliminado='0') and ing_salio='0' and ing_vendido='0'

Espero le sirva a alguien, gracias por la ayuda amigos del foro. Sigamos adelante!!!
__________________
DESARROLLO Y DISEÑO DE PAGINAS WEB, HOSTING, DOMINIO, TRUJILLO PERU
Diseño web
Trujillo - Perú

Última edición por andresweb; 05/01/2008 a las 11:06
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 18:44.