MySQL - Consulta Tipo Track

 
Vista:

Consulta Tipo Track

Publicado por Rojo (8 intervenciones) el 16/04/2007 19:58:01
Alguien que me de una idea de como hacer lo siguiente:

Tengo digamos 10 tablas, cada tabla da origen a un registro en otra tabla, por ejemplo
un Vale esta ligado con una Factura, una Factura con un Contra Recibo.
asi

Requisicion - Consolidacion - Cuadro_Comparativo - Cotizacion - Asignacion - Vale - Factura - Contra_Recibo

Necesito hacer una consulta que mandandole yo cualquier id de cualquier tabla, me arroje los id de las tablas relacionadas, tanto para adelante como para atras.

Por ejemplo si le mando el valor de Vale.id, que me diga todo lo que hay atras de ese Vale, recorriendo las tablas hacia atras y hacia adelante.

ESta algo fumado, pero lo tengo que hacer, y estoy seguro que aqui hay muchos expertos que me podran orientar.

Esta es la consulta que diseñe, en ocasiones funciona, otras no:

Alguien me puede dar una idea de como debo hacerlo... ?

Lo unico que necesito son los id de las otras tablas, es como situarse en un registro de x tabla y ver lo que lo genero de atras y que es lo que este id genera hacia adelante...

SELECT DISTINCT Requisicion.id AS idReq,
Consolidacion.id AS idCons,
Cuadro_Comparativo.id AS idCuadro,
Cotizacion.id AS idCot,
Asignacion.id AS idAsigna,
Detalle_Vale.id AS idDet,
Vale.id AS idVale,
Factura.id AS idFact,
Contra_Recibo.id AS idContra

FROM Requisicion
LEFT JOIN Consolidacion
ON Requisicion.id_Consolidacion = Consolidacion.id

LEFT JOIN Cuadro_Comparativo
ON Consolidacion.id = Cuadro_Comparativo.id_Consolidacion

LEFT JOIN Cotizacion
ON Cuadro_Comparativo.id = Cotizacion.id_Cuadro_Comparativo

LEFT JOIN Asignacion
ON Cotizacion.id = Asignacion.id_Cotizacion

LEFT JOIN Detalle_Vale
ON Asignacion.id = Detalle_Vale.id_Asignacion

LEFT JOIN Vale ON Detalle_Vale.id_Vale = Vale.id
LEFT JOIN Factura ON Vale.Folio_Factura = Factura.Numero
LEFT JOIN Contra_Recibo ON Factura.id = Contra_Recibo.id_Factura

WHERE Requisicion.id like 15 AND Consolidacion.id like "%"
AND Cuadro_Comparativo.id like "%"
AND Cotizacion.id like "%"
AND Asignacion.id like "%"
AND Vale.id like "%"
AND Factura.Numero like "%"
AND Contra_Recibo.id like "%"
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

RE:Consulta Tipo Track

Publicado por kain (124 intervenciones) el 16/04/2007 20:26:43
no creo que se pueda hacer lo que quieres, tal y como lo tienes pensado.
si el valor del id que buscas cada vez, puede ser de una tabla distinta es imposible montar la condiciones del WHERE, porque no sabrias contra que campo comparar.

ahora , otra cosa seria si montaras una FUNCION con dos parametros
primer parametro el ID
segundo la TABLA a la que pertenece.

dentro de la funcion con una serie de IF's podrias localizar el id de la tabla Requisicion, y devolverlo.

asi tu select quedaria de la siguiente manera:
SELECT DISTINCT Requisicion.id AS idReq,
Consolidacion.id AS idCons,
Cuadro_Comparativo.id AS idCuadro,
Cotizacion.id AS idCot,
Asignacion.id AS idAsigna,
Detalle_Vale.id AS idDet,
Vale.id AS idVale,
Factura.id AS idFact,
Contra_Recibo.id AS idContra

FROM Requisicion
LEFT JOIN Consolidacion
ON Requisicion.id_Consolidacion = Consolidacion.id

LEFT JOIN Cuadro_Comparativo
ON Consolidacion.id = Cuadro_Comparativo.id_Consolidacion

LEFT JOIN Cotizacion
ON Cuadro_Comparativo.id = Cotizacion.id_Cuadro_Comparativo

LEFT JOIN Asignacion
ON Cotizacion.id = Asignacion.id_Cotizacion

LEFT JOIN Detalle_Vale
ON Asignacion.id = Detalle_Vale.id_Asignacion

LEFT JOIN Vale ON Detalle_Vale.id_Vale = Vale.id
LEFT JOIN Factura ON Vale.Folio_Factura = Factura.Numero
LEFT JOIN Contra_Recibo ON Factura.id = Contra_Recibo.id_Factura

WHERE Requisicion.id=funcion_que_busca_id(id_a_buscar,"CO")

id_a_buscar seria el id de la tabla cotizaciones y "CO" en parametro que indica a que tabla pertenece el id

claro que todo esto solo lo podrias hacer con la ver 5.x(que es la que soporta funciones)

espero haberte servido de 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

RE:Consulta Tipo Track

Publicado por Rojo (8 intervenciones) el 16/04/2007 23:59:45
Gracias Kain, si, es muy dificil armar el where, aunque a veces esta consulta si me funcionaba, pero creo que lo mejor seria hacerlo con codigo, en este caso con php.

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