Problemas con ordenación de consulta mysql

Iniciado por DUNEDAI, 13 Noviembre 2017, 11:21 AM

0 Miembros y 1 Visitante están viendo este tema.

DUNEDAI

Hola, estoy haciendo un programilla en vb6 que trabaja con consulta mysql el caso es que me devuelve unos valores en un mshflexgrid de manera correcta pero no sé como ordenarlos de manera que me interesa, os explico, esta es la tabla de datos que tengo:


CitarNombre                              |   Nº Refuerzos             |  Grupo

Rodríguez Guerra, J.M                         1                    Grupo 1
Solana Mentrida, J. C                           2                    Grupo 1
Evo Sánchez, Eva                                1                     Grupo 2
Flores Márquez, Raúl                           1                     Grupo 1
Martinez Guerra, Manuel                      1                    Grupo 2
Bódalo Infante, J. C                               2                   Grupo 1 
Rivero Alto, Susana                              2                   Grupo 2
Flores Peña, Rita                                  1                   Grupo 1


Con la consulta:


Sql = "select * from PRINCIPAL where Grupos = '" & Variable_Final & "' order by N_Refuerzo, Nombre"

donde Variable_Final son los grupos 1 y 2 me arroja:


CitarNombre                              |   Nº Refuerzos             |  Grupo

Evo Sánchez, Eva                                1                     Grupo 2
Flores Márquez, Raúl                           1                     Grupo 1
Flores Peña, Rita                                  1                   Grupo 1
Martinez Guerra, Manuel                      1                    Grupo 2
Rodríguez Guerra, J.M                         1                    Grupo 1
Bódalo Infante, J. C                               2                   Grupo 1 
Rivero Alto, Susana                              2                   Grupo 2
Solana Mentrida, J. C                           2                    Grupo 1

Que está bien, el caso es que lo que necesito es que me haga esto pero me coloque los registros alfabéticamente pero a partir de una letra inicial que yo le facilite, ejemplo si elijo la letra "M"  que me hiciera esto:


CitarNombre                              |   Nº Refuerzos             |  Grupo

Martinez Guerra, Manuel                      1                    Grupo 2
Rodríguez Guerra, J.M                         1                    Grupo 1
Evo Sánchez, Eva                                1                     Grupo 2
Flores Márquez, Raúl                           1                     Grupo 1
Flores Peña, Rita                                  1                   Grupo 1
Rivero Alto, Susana                              2                   Grupo 2
Solana Mentrida, J. C                           2                    Grupo 1
Bódalo Infante, J. C                               2                   Grupo 1

Osea, que colocara alfabéticamente a partir de una letra inicial los que tienen 1 refuerzo, y que cd llegara a la Z volviera a empezar, y seguidamente los que tengan 2 refuerzos de igual forma

No sé si me he explicado bien...

Espero vuestra ayuda y gracias de antemano

Serapis

Los métodos de ordenación específicos que a uno s ele ocurra, son amanuense. Es decir debe currárselos uno mismo.

Quizás logres algo más próximo a tus deseso con "Group by", pero sinceramente no estoy muy puesto en mySql.

Mi consejo es que si ya logras tener casi ordenado el tema con la consulta, antes de presentar los datos al usuario tu termines de ordenar los registros a mano, por ejemplo a continuación te expongo una solución sencilla de aplicar...

Es claro que una consulta única, ordena todos los registros que encuentre, lueog una forma de lograr lo que quieres es hacer varias consultas seguidas, más selectivas...
Citar
bucle para k desde 1 hasta maxRefuerzos
    select... ... where refuerzos=k ...
    Si hierarqFlexgridOculto tiene registros
        Añadir estos registros al hflexgrid publico (la consulta previa se envía a uno oculto)
    fin si
fin bucle
vaciar hierarqflexgridoculto.
Su única pega es que serán varias llamadas, es una sobrecarga mayor que si se hace una única llamada, pero salvo que sea una BD gigante, no debería notarse ningún retraso apreciable, si fuera el caso, obtén todos los registros de una sola vez y luego reordena tú mismo con código. Vendrá a tardar más o menos lo mismo pero con menos sobrecarga en la BD y el servidor (suponiendo que sean diferentes equipos, y ese programa esté en el del cliente).