Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar Union ordenada por separado y por colores... (https://www.clubdelphi.com/foros/showthread.php?t=76938)

CHECHE81 06-12-2011 19:56:42

Mostrar Union ordenada por separado y por colores...
 
Saludos Delphileros jojo:D
Pues con la novedad que me tope con un detalle después de hacer un UNION en una consulta en MySQL:
Código SQL [-]
Select * from ( SELECT usu.id,usu.name, usu.username, usu.role, coalesce((pup.id >1 ), 2) pid 
FROM jos_permiso_usr_plantel as pup, plantel_datosgen as pdg,  jos_usuarios as usu 
where pdg.id = pup.idplantel and  pup.idusuario= usu.id and 
pup.sTipoActor= : prol and  pdg.id=: pidplantel  order by pup.id   ) A
   UNION ALL  
Select * from   (   SELECT usu.id, usu.name, usu.username, usu.role, usu.block  
FROM jos_usuarios as usu   
where usu.id not in (  SELECT usu.id 
FROM jos_permiso_usr_plantel as pup, plantel_datosgen as pdg,  jos_usuarios as usu 
where pdg.id = pup.idplantel 
and  pup.idusuario= usu.id and  pup.sTipoActor= : prol and  pdg.id=: pidplantel) 
and usu.role = : prol  order by usu.block   ) B order by 5,2 asc
todo esta perfecto, el detalle es al momento de mostrarlo al usuario, lo que se pretende es mostrar ambas
consultas ordenadas ascendentenmente pero por separado como dicen "Juntas pero no revueltas" :),
mostrandose de un color los registros de la primera consulta y de otro color los de la segunda en orden
ascendente por el campo name por cada consulta. Esto se requiere para mostrar en el mismo cxGrid una
consulta de usuarios de los cuales se clasifican en un grupo de usuarios solo si cumplen ciertos parámetros
asi se me ocurrio jojo y la idea surgio al ver el software QlickView como lo muestra en la imagen siguiente:

Ya logro que me pinte los registros de diferentes colores en el cxGrid dependiendo de cierto parámetro
en la consulta pero me sale toda la consulta ordenada por el campo name y ahi es donde se revuelven
ambas consultas:confused:... espero sus comentarios.
Gracias por su tiempo...:cool:

thecidmx 06-12-2011 20:30:37

se me ocurre
 
se me ocurre que crees varias tablas de memoria una por consulta, con eso no se te generara un revoltijo, y luego ues los datos en el grid, para generar el diagrama. puesde usar el tmemory de jvcl.

oscarac 06-12-2011 20:38:34

pienso que en la consulta deberias agregar un campo numerico, donde lo rellenes con el valor 1 para la primera consulta y el valor 2 para la segunda

luego el orden seria... ese campo numerico + la descripcion... asi por mas que la descripcion sea igual no se juntara por el primer orden

CHECHE81 07-12-2011 02:06:10

Gracias por sus cometarios thecidmx, oscarac, ya quedo el show, lo que paso fue que estaba mal armada la consulta y si mi estimado oscarac ya tenia esos campos pero faltaba acomodarlos para que arrojara la consulta correcta, tienes toda la razón con respecto a ordenarlos de acuerdo al campo numérico y después por nombre jojo:) y ya se pueden visualizaran en el cxGrid como en la imágen de arriba.
Les dejo la consulta por si le sirve a alguien más y muchismas gracias por su tiempo.:cool:

Código SQL [-]
Select * from
(SELECT usu.id, usu.name, usu.username, usu.role,COALESCE(pup.id>1 ,2) pid
FROM jos_permiso_usr_plantel as pup,
plantel_datosgen as pdg, 
jos_usuarios as usu
where pdg.id = pup.idplantel and
 pup.idusuario= usu.id and 
pup.sTipoActor= : prol and
 pdg.id=: pidplantel
and usu.block =0
order by  pid desc, name
) A

 
 UNION

 SELECT  usu.id, usu.name, usu.username, usu.role, usu.block
 FROM jos_usuarios as usu 
 where usu.id not in (
 SELECT usu.id FROM jos_permiso_usr_plantel as pup,
plantel_datosgen as pdg, 
jos_usuarios as usu
where pdg.id = pup.idplantel and
 pup.idusuario= usu.id and 
pup.sTipoActor=: prol and
 pdg.id=: pidplantel) and usu.role = : prol
 and usu.block =0
 order by pid desc, name


La franja horaria es GMT +2. Ahora son las 14:59:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi