Ordenar consulta por dos campos

24/07/2003 - 14:20 por Jon Bilbao | Informe spam
Quiero hacer una consulta que el resultado se ordene mediante dos campos de
la siguiente forma (ejemplo):

C1 C2

1 1
2 1
3 1
4 1 <5 2 <4 1 <5 2 <6 1
7 1

La consulta SQL -- "SELECT * FROM Tabla order by C1,C2" -- me da:

C1 C2

1 1
2 1
3 1
4 1 <4 2 <5 1 <5 2 <6 1
7 1

y la consulta SQL -- "SELECT * FROM Tabla order by C2,C1" -- me da:

C1 C2

1 1
2 1
3 1
4 1 <5 1 <6 1
7 1
4 2 <5 2 <
Ninguno de los dos casos es correcto y el orden de presentación es muy
importante. ¿Alguien sabría como orientar la consulta para que el orden de
presentación fuese el correcto?

Gracias por anticipado.

Nota: Esta consulta se conecta con un DataGrid

Preguntas similare

Leer las respuestas

#6 Liliana Sorrentino
29/07/2003 - 19:37 | Informe spam
Jon,
estoy siguiendo tu problema desde el primer mensaje, pero me resulta muy
complicado ubicar los datos. ¿Podrías mandar la información de cada fila de
cada tabla? Solo de los datos que mandás como ejemplo. Y cuáles son las
filas que relacionan las tablas entre sí.
Gracias... Liliana.

"Jon Bilbao" escribió en el mensaje
news:
Pido disculpas por la dificultad que tengo en plantear mi pregunta y por


el
trabajo que os causo. Intentaré ser más claro:

Resumiendo un poco, dispongo de tres tablas, FICHAS, PANTILLAS y DATOS y


los
campos más relevantes de ellas para nuestra cuestión son:

FICHAS PLANTILLAS DATOS
idFicha idLinea idLinea
idLinea ordenLinea idElemento
Grupo subGrupo
Texto1 Dato1
Texto2 Dato2
...

Si queremos mostrar la ficha=1 del elemento=1, en la tabla FICHAS
obtendremos la lista de lineas idLinea asignadas a idFicha=1 que la


componen
y se encuentran en la tabla PLANTILLAS (son únicas). Para rellenar de


datos
esta ficha encontraremos datos específicos para el elemento=1 en la tabla
DATOS donde se establece la relación entre los datos de cada elemento y la
linea de plantilla donde deben alojarse. Normalmente para cada linea de
plantilla un elemento solo contiene una línea de datos por lo cual la
estructura final de la ficha coincide con la plantilla, pero debido a
modificaciones actuales (causantes de mi problema) puede haber elementos


que
presenten DOS lineas de datos asociadas a la misma línea de plantilla.
Resultado: se duplica la misma linea de plantilla generando dos líneas en


la
ficha (cada una con sus datos de subGrupo).

Hasta aquí todo va bien y según lo previsto, el problema surge con el


orden
de presentación de las líneas en la ficha final. En la tabla PLANTILLA hay
un campo "ordenLinea" que indica el orden de presentación que deben tener
las distintas líneas de la ficha y este criterio, en principio, es


correcto
pero cuando aparecen duplicaciones de líneas debidas a los subGrupos el
sistema de orden actual no se corresponde con lo deseado y de hecho mi
problema es ese: No encuentro una forma de asignar un criterio de orden
nuevo que respete lo anterior y asigne el orden correcto para las líneas
duplicadas.

Mi primer intento ha sido aplicar un "ORDER BY ordenLinea, SubGrupo" pero


el
resultado no es correcto. Para entender lo que necesito explico lo de


Grupos
y subGrupos: Los elementos de esta base de datos presentan su información
agrupada y esto se representa en la tabla PLANTILLAS mediante el campo
Grupos, puesto que esto depende exclusivamente de la posición en la ficha
(ver Nota de solución mía). En cuanto al campo subGrupo es una subdivisión
dentro del grupo (como indica su nombre) pero esta se debe a determinados
rangos de valores para elementos concretos. Como la aparición de subGrupos
implica la duplicidad de datos parece lógico ubicar este campo en la tabla
DATOS.

Una pega sobre la propuesta de Miguel Egea: El campo Grupo (que antes
denominaba C3) no sirve actualmente para ordenar, ya que en el


planteamiento
actual solo sirve como criterio de agrupacion (puesto que el orden ya lo
indican las propias lineas de la plantilla). Sin embargo empiezo a pensar
que tendre que cambiar algo sobre este punto. De momento los unicos campos
cuyo valor esta relacionado con el orden de presentacion son "ordenLinea"


y
"subGrupo"

Un ejemplo de la ficha esperada es:

Grupo OrdenLinea SubGrupo
-
Primero Param1 Primero
Primero Param2 Primero
Primero Param2 Primero

Segundo Param1 Segundo
Segundo Param2 Segundo
Segundo Param1 SegundoBIS
Segundo Param2 SegundoBIS

Tercero Param1 Tercero
Tercero Param2 Tercero

Y desde luego aplicando el criterio "ORDER BY ordenLinea, SubGrupo" el
resultado es (ver el grupo Segundo):

Grupo OrdenLinea SubGrupo
-
Primero Param1 Primero
Primero Param2 Primero
Primero Param2 Primero


Segundo Param1 Segundo
Segundo Param1 SegundoBIS
Segundo Param2 Segundo
Segundo Param2 SegundoBIS


Tercero Param1 Tercero
Tercero Param2 Tercero


Nota de Solución mía: He valorado la posibilidad de crear una tabla
intermedia denominada GRUPOS entre FICHAS y PLANTILLAS, lo que


probablemente
resolviese mis problemas, ya que el criterio de orden "ORDER BY


ordenGrupo,
subGrupo,ordenLinea" sería válido con toda seguridad. Pero resulta muy
complejo de ejecutar ya que implica reformar buena parte del código.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida