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

Ordernar y seleccionar valores de dos campos

Estas en el tema de Ordernar y seleccionar valores de dos campos en el foro de Mysql en Foros del Web. Tengo una tabla con tres campos. Id, nombre y activo. Código HTML: ID NOMBRE ACTIVO 1 Jose 0 2 Laura 1 3 Sara 0 4 ...
  #1 (permalink)  
Antiguo 05/01/2012, 06:16
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Ordernar y seleccionar valores de dos campos

Tengo una tabla con tres campos. Id, nombre y activo.

Código HTML:
ID	NOMBRE	ACTIVO
1       Jose	0
2	Laura	1
3	Sara	0
4	Alfonso	1
5	Raul    0
6	Fabiola 1
7	Maria	2
8	Manuel	2
9	Gema	1
10	Carlos	2

Yo quiero mostrarlos por orden alfabético y que ademas, los usuarios con el campo activo igual a 2, se muestren primero tal que así

Código HTML:
10	Carlos	2
8	Manuel	2
7	Maria	2
4	Alfonso	1
6	Fabiola 1
9	Gema	1
1	Jose	0
2	Laura	1
5	Raul 	0
3	Sara	0

¿Como lo puedo expresar?
  #2 (permalink)  
Antiguo 05/01/2012, 07:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ordernar y seleccionar valores de dos campos

Sería posible.... pero explícame una cosa: ¿Por qué Laura, que tiene ACTIVO en 1, se encuentra entre dos con ACTIVO en cero?
Da la impresión de que tu ordenamiento es arbitrario y no sigue una lógica aplicable al GROUP BY...
__________________
¿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 05/01/2012, 07:22
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: Ordernar y seleccionar valores de dos campos

0 corresponde a usuarios sin confirmar, 1 a usuarios confirmados y 2 a usuarios confirmados referidos. Por eso quiero que muestre los usuarios por orden alfabético con referido (valor 2) primero y después en la misma consulta los confirmados y no confirmados y que ambos paquetes se ordenen alfabeticamente.

Debería usar una tabla de apoyo, pero ya he montado toda una página con este sistema y no vi el problema que tengo ahora. De no haber una manera de hacerlo así, me va a costar caro re escribir todo de nuevo.
  #4 (permalink)  
Antiguo 05/01/2012, 07:25
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: Ordernar y seleccionar valores de dos campos

Más claro sera así. Quiero mostrar los 10 nombres en dos paquetes, por un lado con el valor de campo activo 2 y después otro paquete con valor de campo activo 1 y 0. A demás, cada paquete tiene que estar ordenado alfabéticamente en la misma consulta.
  #5 (permalink)  
Antiguo 05/01/2012, 07:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ordernar y seleccionar valores de dos campos

Tienes dos criterios interexcluyentes, por lo que la única forma de resolverlo es con un UNION:
Código MySQL:
Ver original
  1.     (SELECT ID, NOMBRE, ACTIVO
  2.     FROM usuarios
  3.     WHERE ACTIVO = 2
  4.     ORDER BY NOMBRE) T1
  5.     (SELECT ID, NOMBRE, ACTIVO
  6.     FROM usuarios
  7.     WHERE ACTIVO <> 2
  8.     ORDER BY NOMBRE) T2
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 05/01/2012, 08:25
 
Fecha de Ingreso: julio-2009
Mensajes: 172
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: Ordernar y seleccionar valores de dos campos

Gracias amigo. Me funciono perfecto. Descarte UNION desde el principio y resulta que era la mejor opcion.

Lo resumi asi por si a alguien le es util

Código MySQL:
Ver original
  1. SELECT * FROM (SELECT * FROM usuario WHERE activo = 2 ORDER BY nombre) T1
  2.     UNION ALL
  3. SELECT * FROM (SELECT * FROM usuario WHERE activo <> 2 ORDER BY nombre) T2

Etiquetas: campos, tabla
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:10.