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

Ordenar de forma independiente sentencias "unidas" con UNION

Estas en el tema de Ordenar de forma independiente sentencias "unidas" con UNION en el foro de Mysql en Foros del Web. Saludos maestros de maestros a continuación les planteo mi cuestión agradeciendo desde ahora cualquier ayuda. Tengo una tabla llamada "facturas" en donde se guardan los ...
  #1 (permalink)  
Antiguo 10/11/2012, 01:00
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 11 meses
Puntos: 22
Ordenar de forma independiente sentencias "unidas" con UNION

Saludos maestros de maestros a continuación les planteo mi cuestión agradeciendo desde ahora cualquier ayuda.

Tengo una tabla llamada "facturas" en donde se guardan los numeros de facturas de los asociados.

Necesito genera un un listado en donde primero se muestren las facturas del asociado 6 y después las de todos los demás asociados, para ello utilizo UNION para unir dos bloques de sentencias.

Cita:
SELECT *
FROM `facturas`
WHERE id_asociado = 6
UNION
SELECT *
FROM `facturas`
WHERE id_asociado <> 6
Esta sentencia funciona bien y hace lo que busco, sin embargo, me veo en la necesidad de ordenar cada bloque de sentencias por separado, o sea las sentencias deberian ser:

SENTENCIA 1

SELECT *
FROM `facturas`
WHERE id_asociado = 6 ORDER BY num_factura DESC

SENTENCIA 2

FROM `facturas`
WHERE id_asociado <> 6 ORDER BY num_factura DESC

Sin embargo al usar UNION la condición es que el ordenamiento se especifique al final de la segunda sentencia lo que ocasiona que se realice el ordenamiento en toda la tabla resultante y no en cada sentencia por separado que es lo que estoy buscando.

Cita:
SELECT *
FROM `facturas`
WHERE id_asociado = 6
UNION
SELECT *
FROM `facturas`
WHERE id_asociado <> 6 ORDER BY num_factura DESC
Se puede lograr el ordenamiento independiente de cada bloque de consulta en la tabla resultante?

Espero haberme explicado, agradezco nuevamente cualquier pequeña ayuda que me arroje un poco de luz sobre esta cuestión.

Saludos.
  #2 (permalink)  
Antiguo 10/11/2012, 04:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ordenar de forma independiente sentencias "unidas" con UNION

Cita:
Sin embargo al usar UNION la condición es que el ordenamiento se especifique al final de la segunda sentencia lo que ocasiona que se realice el ordenamiento en toda la tabla resultante y no en cada sentencia por separado que es lo que estoy buscando.
Bueno, es algo que puedes entender leyendo el manual: Las sentencias ORDER BY y GROUP BY se aplican al final del proceso y sobre la tabla resultado en total.
Es decir: Lo que te parece un problema, en realidad es el comportamiento normal y esperado del ORDER BY.
¿La solución?
En realidad es MUY simple:
Código MySQL:
Ver original
  1.   (SELECT *
  2.   FROM `facturas`
  3.   WHERE id_asociado = 6) t1
  4.   (SELECT *
  5.   FROM `facturas`
  6.   WHERE id_asociado <> 6) t2
  7. ORDER BY num_factura DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/11/2012, 10:29
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 11 meses
Puntos: 22
Respuesta: Ordenar de forma independiente sentencias "unidas" con UNION

Muchísimas grácias gnzsoloyo, ahora mismo lo voy a probar.

Saludos.

Etiquetas: independiente, select, sentencias, tabla, unidas, union, formulario
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 00:58.