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

Problema ordenación left join

Estas en el tema de Problema ordenación left join en el foro de Oracle en Foros del Web. Muy buenos días. Acabo de llegar al foro porque necesito ayuda. Veréis tengo la siguiente consulta: select distinct ECT_D_Tarea.ect_id_tarea, ECT_D_Tarea.ect_ds_nombre as tarea,ECT_P_Estados.ect_ds_nombre as estado, ECT_P_Prioridades.ect_ds_nombre ...
  #1 (permalink)  
Antiguo 15/02/2010, 03:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Desacuerdo Problema ordenación left join

Muy buenos días.

Acabo de llegar al foro porque necesito ayuda. Veréis tengo la siguiente consulta:

select distinct ECT_D_Tarea.ect_id_tarea, ECT_D_Tarea.ect_ds_nombre as tarea,ECT_P_Estados.ect_ds_nombre as estado, ECT_P_Prioridades.ect_ds_nombre as prioridad, Contact_.firstname||' '||Contact_.middlename||' '||Contact_.lastname as creador, ECT_D_Tarea.ect_fh_fechacreacion as ect_fh_fechacreacion,ECT_D_Tarea.ect_fh_fechaultca mbio as ect_fh_fechaultcambio, ECT_D_Tarea.ect_fh_fechalimite as ect_fh_fechalimite, ECT_D_Tarea.ect_fh_fechaplanificada as ect_fh_fechaplanificada
from ECT_P_Prioridades, User_, Contact_, ECT_D_Tarea LEFT JOIN
(select ECT_R_Tareas_Usuarios.ect_tarea_fk, ECT_R_Tareas_Usuarios.ect_usuario_FK, ECT_R_Tareas_Usuarios.ect_lg_vinculacion, Contact_.FIRSTNAME||' '||Contact_.MIDDLENAME||' '||Contact_.LASTNAME as vinculado
from ECT_R_Tareas_Usuarios, User_, Contact_
where Contact_.contactid = User_.userid and User_.userid= ECT_R_Tareas_Usuarios.ect_usuario_fk
) tarusu
on ECT_D_Tarea.ect_id_tarea=tarusu.ect_tarea_fk, ECT_P_Estados
where ECT_P_Estados.ect_id_estado = ECT_D_Tarea.ect_estado_fk and Contact_.contactid = User_.userid and User_.userid= ECT_D_Tarea.ect_creador_fk and ECT_D_Tarea.ect_prioridad_fk=ECT_P_Prioridades.ect _id_prioridad

y me gustaría añadirle un order by por el campo señalado en negrita y mayúsculas pero, no me deja. ¿Qué estoy haciendo mal?

Un saludo y gracias.
  #2 (permalink)  
Antiguo 15/02/2010, 07:43
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema ordenación left join

la consulta te ordena por un campo resultante en la información a mostrar y no por uno que haga parte de una tabla generada a través de una consulta sin ser parte de los campos a mostrar.

Prueba algo así

select distinct ECT_D_Tarea.ect_id_tarea, ECT_D_Tarea.ect_ds_nombre as tarea,ECT_P_Estados.ect_ds_nombre as estado, ECT_P_Prioridades.ect_ds_nombre as prioridad, Contact_.firstname||' '||Contact_.middlename||' '||Contact_.lastname as creador, ECT_D_Tarea.ect_fh_fechacreacion as ect_fh_fechacreacion,ECT_D_Tarea.ect_fh_fechaultca mbio as ect_fh_fechaultcambio, ECT_D_Tarea.ect_fh_fechalimite as ect_fh_fechalimite, ECT_D_Tarea.ect_fh_fechaplanificada as ect_fh_fechaplanificada, tarusu.vinculado as vinculado
from ECT_P_Prioridades, User_, Contact_, ECT_D_Tarea LEFT JOIN
(select ECT_R_Tareas_Usuarios.ect_tarea_fk, ECT_R_Tareas_Usuarios.ect_usuario_FK, ECT_R_Tareas_Usuarios.ect_lg_vinculacion, Contact_.FIRSTNAME||' '||Contact_.MIDDLENAME||' '||Contact_.LASTNAME as vinculado
from ECT_R_Tareas_Usuarios, User_, Contact_
where Contact_.contactid = User_.userid and User_.userid= ECT_R_Tareas_Usuarios.ect_usuario_fk
) tarusu
on ECT_D_Tarea.ect_id_tarea=tarusu.ect_tarea_fk, ECT_P_Estados
where ECT_P_Estados.ect_id_estado = ECT_D_Tarea.ect_estado_fk and Contact_.contactid = User_.userid and User_.userid= ECT_D_Tarea.ect_creador_fk and ECT_D_Tarea.ect_prioridad_fk=ECT_P_Prioridades.ect _id_prioridad
order by vinculado


prueba y nos cuentas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 15/02/2010, 10:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema ordenación left join

Buenas!!!!

Antes de nada gracias por la pronta respuesta y la verdad es que funciona!!. Sólo una preguntita más. Ese campo dependiendo del valor que tome ect_lg_vinculacion representa una cosa u otra me explico.

ect_lg_vinculacion es 0 --> delegado
ect_lg_vinculacion es 1 --> asignado
ect_lg_vinculacion es 2 --> responsables

Entonces si me dicen por ejemplo ordena por responsables, tendré que añádir tarusu.ect_lg_vinculacion al select y luego hacen un and ect_lg_vinculacion=2 y después el order by tarusu.vinculado ¿estoy en lo cierto?

Un saludo,
Buenas tardes.
  #4 (permalink)  
Antiguo 15/02/2010, 13:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema ordenación left join

Puedes hacer uso de case para mostrar las opciones que dices según el valor del campo.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 16/02/2010, 02:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema ordenación left join

Buenos días,

¿y podrías indicarme eso? Es que nunca he utilizado un case aquí en sql.Tú me dices de poner algo así?

case
when ect_lg_vinculacion = '0' then 'star'
when ect_lg_vinculacion = '1' then 'plus'
when ect_lg_vinculacion = '2' then 'minus'
else '????'
end


¿Sería mucho pedirte que me ayudarás un poquito más?

De antemano muchas gracias por las respuestas.
  #6 (permalink)  
Antiguo 16/02/2010, 07:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema ordenación left join

Cita:
Iniciado por sql83 Ver Mensaje
Buenos días,

¿y podrías indicarme eso? Es que nunca he utilizado un case aquí en sql.Tú me dices de poner algo así?

case
when ect_lg_vinculacion = '0' then 'star'
when ect_lg_vinculacion = '1' then 'plus'
when ect_lg_vinculacion = '2' then 'minus'
else '????'
end


¿Sería mucho pedirte que me ayudarás un poquito más?

De antemano muchas gracias por las respuestas.
Es así como lo pones. Si lo pones entre paréntesis y le pones un alias, ya tienes un campo mas de la base de datos por el cual puedes ordenar.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 16/02/2010, 09:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema ordenación left join

Perdona,

pero no sé como incluir eso dentro de la super consulta, por ejemplo si tengo que ordenar por los asignados que son aquellos que tienen ect_lg_vinculacion=1 ¿podrías indicarme cómo lo realizarías tú?

Un saludo
  #8 (permalink)  
Antiguo 16/02/2010, 09:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema ordenación left join

Cita:
Iniciado por sql83 Ver Mensaje
Perdona,

pero no sé como incluir eso dentro de la super consulta, por ejemplo si tengo que ordenar por los asignados que son aquellos que tienen ect_lg_vinculacion=1 ¿podrías indicarme cómo lo realizarías tú?

Un saludo
Si solo son los ect_lg_vinculacion=1 no utilizaría case sino que lo pondría como condición en el where.

Código SQL:
Ver original
  1. SELECT
  2. DISTINCT ECT_D_Tarea.ect_id_tarea,
  3. ECT_D_Tarea.ect_ds_nombre AS tarea,
  4. ECT_P_Estados.ect_ds_nombre AS estado,
  5. ECT_P_Prioridades.ect_ds_nombre AS prioridad,
  6. Contact_.firstname||' '||Contact_.middlename||' '||Contact_.lastname AS creador,
  7. ECT_D_Tarea.ect_fh_fechacreacion AS ect_fh_fechacreacion,
  8. ECT_D_Tarea.ect_fh_fechaultca mbio AS ect_fh_fechaultcambio,
  9. ECT_D_Tarea.ect_fh_fechalimite AS ect_fh_fechalimite,
  10. ECT_D_Tarea.ect_fh_fechaplanificada AS ect_fh_fechaplanificada,
  11. tarusu.vinculado AS vinculado,
  12. [COLOR="red"]tarusu.ect_lg_vinculacion AS ect_lg_vinculacion[/COLOR]
  13. FROM ECT_P_Prioridades, User_, Contact_, ECT_D_Tarea
  14. LEFT JOIN
  15. (SELECT
  16.  ECT_R_Tareas_Usuarios.ect_tarea_fk,
  17.  ECT_R_Tareas_Usuarios.ect_usuario_FK,
  18.  ECT_R_Tareas_Usuarios.ect_lg_vinculacion AS ect_lg_vinculacion,
  19.  Contact_.FIRSTNAME||' '||Contact_.MIDDLENAME||' '||Contact_.LASTNAME AS vinculado
  20.  FROM ECT_R_Tareas_Usuarios, User_, Contact_
  21.  WHERE Contact_.contactid = User_.userid  
  22.  AND
  23.  User_.userid= ECT_R_Tareas_Usuarios.ect_usuario_fk
  24.  [COLOR="Red"]AND
  25.  ECT_R_Tareas_Usuarios.ect_lg_vinculacion=1[/COLOR]
  26.  
  27. ) tarusu
  28. ON
  29. ECT_D_Tarea.ect_id_tarea=tarusu.ect_tarea_fk, ECT_P_Estados
  30. WHERE
  31. ECT_P_Estados.ect_id_estado = ECT_D_Tarea.ect_estado_fk  
  32. AND
  33. Contact_.contactid = User_.userid
  34. AND
  35. User_.userid= ECT_D_Tarea.ect_creador_fk
  36. AND
  37. ECT_D_Tarea.ect_prioridad_fk=ECT_P_Prioridades.ect_id_prioridad
  38. ORDER BY vinculado, [COLOR="red"]ect_lg_vinculacion[/COLOR]

el case es utilizado para mostrar un valor dependiendo del valor del campo, pero no para condicionar si es 1 o 2 o 3.

PD: Los cambios los hice, donde trato de ponerle color rojo a la sentencia

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 22/02/2010, 04:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema ordenación left join

Buenas de nuevo,

Siento tardar en la respuestas pero, es que he tenido problemas de conexión a internet en los últimos días. Tengo un problema, con la solución que me diste además de ordenarme sólo por los asignados me muestra la lista de tareas donde sólo hay asignados y yo no quiero eso.

Quiero que me muestre todas las tareas con su correspondiente cláusula pero, que luego me lo ordene por asignados, por ejemplo.

Se me estaba ocurriendo si existe algo como el campo vinculado dividirlo en tres es decir:

campo asignado, delegado y responsable y cada uno de ellos que recoja los nombres correspondientes pero , que no deje de limitar mi consulta.

¿Podrías ayudarme un poco más?

Gracias un saludo.
  #10 (permalink)  
Antiguo 10/03/2010, 01:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema ordenación left join

Cita:
Iniciado por sql83 Ver Mensaje
Buenas de nuevo,

Siento tardar en la respuestas pero, es que he tenido problemas de conexión a internet en los últimos días. Tengo un problema, con la solución que me diste además de ordenarme sólo por los asignados me muestra la lista de tareas donde sólo hay asignados y yo no quiero eso.

Quiero que me muestre todas las tareas con su correspondiente cláusula pero, que luego me lo ordene por asignados, por ejemplo.

Se me estaba ocurriendo si existe algo como el campo vinculado dividirlo en tres es decir:

campo asignado, delegado y responsable y cada uno de ellos que recoja los nombres correspondientes pero , que no deje de limitar mi consulta.

¿Podrías ayudarme un poco más?

Gracias un saludo.

Nadie puede ayudarme de verdad?????

Etiquetas: join, left
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 19:08.