MySQL - Como omitir Registros

 
Vista:

Como omitir Registros

Publicado por Rojo (8 intervenciones) el 10/04/2007 21:03:21
Hola, alguien me podria apoyar con la siguiente consulta (algo compleja), la relacion de tablas es asi:

Requisicion- Detalle_Requisicion-Asignacion-Cotizacion-Condicion_Cotizacion

Tengo una requisicion de productos en la cual se solicitan varios productos (Detalle_Requisicion), en el detalle especifico el producto y cantidad, despues yo le compro a un determinado proveedor (Asignacion), a traves de Asignacion-id_Detalle_Requisicion.id=Detalle_Requisicion.id yo se en que Cotizacion cayo ese producto, pues de Asignacion me voy a la tabla de Cotizacion con la relacion
Asignacion.id_Cotizacion=Cotizacion.id, y luego para esa Cotizacion existen varias condiciones de Cotizacion (Condicion_Cotizacion.id_Cotizacion=Cotizacion.id)
, este es un ejemplo de la tabla Condicion_Cotizacion:

Rango_Menor Rango_Mayor Precio
1 5 20
6 10 18
11 20 15

Para obtener el precio lo que hago es Checar en que Condicion_Cotizacion cae mi Detalle_Requisicion.Cantidad, y de ahi saco el precio, el problema es que si por ejemplo pido 7 piezas de un producto, este cae en la condicion 6-10 y me da el precio 18, pero como mi consulta verifica todas las condiciones de cotizacion, entonces a los que no coincidan con la cantidad, les pone un cero y eso me duplica registros, lo que deseo es solo obtener el registro de Condicion_Cotizacion donde caiga mi cantidad.

Espero haberme explicado.

Gracias.

CONSULTA


SELECT DISTINCT Condicion_Cotizacion.id AS idCond,
Detalle_Requisicion.Cantidad AS Cantidad,
Detalle_Requisicion.id_Producto AS id_Producto,
Producto.Nombre AS Descripcion,
Unidad.Nombre AS Unidad,
Marca.Nombre AS Marca,
Proveedor.Razon_Social AS Proveedor,
Producto.Presentacion AS Presentacion,
if( Detalle_Requisicion.Cantidad
BETWEEN Condicion_Cotizacion.Rango_Menor
AND Condicion_Cotizacion.Rango_Mayor,
Condicion_Cotizacion.Precio,0 ) AS Precio,
Requisicion.id_Dependencia AS idDep,
Detalle_Requisicion.Eje_Rector AS Eje,
Detalle_Requisicion.Sector AS Sec,
Detalle_Requisicion.Programa AS Prog,
Detalle_Requisicion.SubPrograma AS SubP,
Producto.id_Partida AS Partida
FROM Requisicion
LEFT JOIN Detalle_Requisicion ON
Requisicion.id = Detalle_Requisicion.id_Requisicion
LEFT JOIN Producto ON
Detalle_Requisicion.id_Producto = Producto.id
LEFT JOIN Asignacion ON
Detalle_Requisicion.id = Asignacion.id_Detalle_Requisicion
LEFT JOIN Cotizacion ON
Asignacion.id_Cotizacion = Cotizacion.id
LEFT JOIN Condicion_Cotizacion ON
Cotizacion.id = Condicion_Cotizacion.id_Cotizacion
LEFT JOIN Proveedor ON
Proveedor.id = Cotizacion.id_Proveedor
LEFT JOIN Marca ON Producto.id_Marca = Marca.id
LEFT JOIN Unidad ON Producto.id_Unidad = Unidad.id
WHERE Requisicion.id = 7
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:Como omitir Registros

Publicado por kain (124 intervenciones) el 10/04/2007 23:21:22
no se si te he entendido bien, pero creo que si pones esto:

WHERE Detalle_Requisicion.Cantidad BETWEEN Condicion_Cotizacion.Rango_Menor AND Condicion_Cotizacion.Rango_Mayor AND Requisicion.id = 7

quizas podria valer.
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:Como omitir Registros

Publicado por Rojo (8 intervenciones) el 11/04/2007 00:25:10
Gracias JoseLuis, agregando esas lineas al final, si me da registros no repetidos, pero solo me da para aquellos que exista una cotizacion, y omite todos los datos de los registros de Detalle_Requisicion que no tengan una asignacion.


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