Oracle - No me funciona "DISTINCT"

   
Vista:
Imágen de perfil de Yogui

No me funciona "DISTINCT"

Publicado por Yogui (7 intervenciones) el 07/05/2014 17:33:21
Holaa, tengo un problema con un query
Resulta lo siguiente: Mi query funciona con nomalidad, los campos que me muestra son -de una tabla A-

Por ejemplo:
(En realidad el query es más complejo, pero estoy usando un ejemplo simple)

select a.codigo_agente, a.reporte_agente
from tablaA a

Y me muestra con normalidad, el asunto es que yo al lado del codigo quiero mostrar el nombre del agente, sin embargo el nombre no está dentro de la tablaA sino de una tablaB, lo normal que podría hacer sería lo siguiente

select a.codigo_agente, b.nombre_agente, a.reporte_agente
from tablaA a, tablaB b
where a.codigo=b.codigo

Pero el asunto está en que en la tablaB el campo "código" no es una PK, entonces tengo valores duplicados.

Estuve usando el distinct, pero como les comentaba, mi query es más complejo, entonces me hace un distinct para todo, luego con un group by y con un order by y de igual manera no me funciona.

Ayuda :(
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

No me funciona "DISTINCT"

Publicado por Miguel (8 intervenciones) el 08/05/2014 05:24:44
Hola,
Si solo es un tema de duplicidad de registros deberia resolverse de esa forma,

1
2
3
4
5
6
select a.codigo_agente, b.nombre_agente, a.reporte_agente
from tablaA a,
(select distinct nombre_agente,codigo
  from tablaB
)b
where a.codigo=b.codigo

si un codigo tiene mas de una descripcion distinta, entonces debes seleccionar solo una, me parece que este codigo funciona en oracle,

1
2
3
4
5
6
7
select a.codigo_agente, b.nombre_agente, a.reporte_agente
from tablaA a,
(select distinct max(nombre_agente),codigo
  from tablaB
 group by codigo
)b
where a.codigo=b.codigo

lo anterior, siempre y cuando no existan reglas de negocio definidas para elegir una de las descripciones del agente,

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

No me funciona "DISTINCT"

Publicado por luis pablo luis2409@gmail.com (232 intervenciones) el 09/05/2014 02:21:26
Hola, lo puedes hacer asi .... :

1
2
3
4
5
6
7
select a.codigo_agente,
( select  b.nombre_agente
from  tabla_b  b
where b.codigo= a.codigo
and rownum=1 ) nombre ,
 a.reporte_agente
from tablaA a;

Hay varias formas, no solo el select te debe funcionar sino que también se debe usar los indices adecuados en cada tabla, favor de verificar que se usen los indices en las tablas y medir el tiempo de ejecución de la consulta.


Saludos

Luis Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Yogui

No me funciona "DISTINCT"

Publicado por Yogui (7 intervenciones) el 29/05/2014 18:53:41
Luis Pablo, me funcionó muy bien, muuuuuuuuuchas gracias ;____;
En serio te lo agradezco mucho :)
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