Evitar duplicados en consulta muchos a muchos
Que tal saludos a todos y pues tengo ya desde ayer viendo como puedo evitar esto que esl título del post.
Estoy utilizando Oracle 11g y desarrollo en .NET con C# y para probar las consultas antes de pasarlas a la app utilizo SQL Developer.
Lo que quiero es seleccionar los proveedores de la orden de compra.
Es decir que cada orden puede tener de 1 a 5 proveedores en este caso solo tiene 3. Pero cada orden puede tener uno o muchos artículos (como en este caso que son 6). Ahora esta orden tiene 6 artículos y 3 proveedores que pueden surtir esa orden. Pero lo que me da como resultado es en realidad un 3 «prov» x 6 «art» = 18 filas como resutado. O sea que no esta mal el resultado pero por cada proveedor me muestra el artículo y pues yo lo que quiero es evitar que me duplique le resultado.
La consulta es a 6 tablas desde las cuales tomo los datos que ocupo y es esta:
select ct.fechacotiza, p.nombrecomercial, p.contacto, p.telefono, rq.ejercicio, rq.consecutivo, cb.descripcion, um.descripcion_um, pr.cantidad
from cotizacion ct, proveedores p, requisicion rq, catalogo_bienes cb, partidasreq pr, unidad_medida um
where rq.ejercicio = pr.ejercicio
and rq.consecutivo = pr.consecutivo
and ct.idproveedor = p.idproveedor
and pr.id_bien = cb.id_bien
and cb.id_unidad = um.id_unidad
and rq.ejercicio = :e
and rq.consecutivo = :c
Y bueno algo de lo que me muestra el select:
nombrecomercial descripcion
——————— ——————————–
aa FOLDER COLGANTE T/O
xyz FOLDER COLGANTE T/O
mm FOLDER COLGANTE T/O
aa FOLDER TAMAÑO OFICIO P/100
xyz FOLDER TAMAÑO OFICIO P/100
mm FOLDER TAMAÑO OFICIO P/100
aa SOBRES MANILA TAMAÑO CARTA
xyz SOBRES MANILA TAMAÑO CARTA
mm SOBRES MANILA TAMAÑO CARTA
Recuerdo que había una intrucción select donde retornaba creo que null para el caso de los duplicados, pero ya tengo desde ayer con esto y no he podido resolverlo.
Nota: Las variables que se ven allí no están declaradas aquí porque en realidas así las uso en C# que es el lenguaje que utilizo pero igual se pueden sustituir por algo como :e = 2011 y :c = 1. Pero las consultas siempre las pruebo antes de usarlas para ver que resultado tengo
Gracias !