FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Order by anidados
Hola compañeros, yo de nuevo con otra de mis dudas, la cosa va asi tengo una tabla con dos campos TIMESTAMP, uno de ellos (fecha1) es not null, mientras que el otro (fecha2) si puede estar en null, mi problema es el siguiente, necesito ordenar todos los datos de la siguiente forma, en primer lugar deben estar los datos que su fecha2 sea null, estos datos deben estar ordenados de acuerdo a la fecha almacenada en fecha1, despues de estos campos tiene que aparecer los datos cuya fecha2 sea diferente de null igualmente ordenados por fecha1, se me ocurrio algo asi como un order by anidado (por eso el titulo del mensaje) pero no he dado como. Agradesco cualquier ayuda o guia que me puedan brindar muchas gracias y estamos hablando, besos y abrazos.
P.D. utilizo delphi 7 y postgreSQL 8.3, los resultados los muestro en un dbgrid |
#2
|
||||
|
||||
Hola
No se si en postgre sql funcione pero en mssql, es asi:
Espero te sirva Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!! |
#3
|
||||
|
||||
Hola, muchas gracias por tu respuesta, te cuento que esa solucion ya la habia contemplado, pero al ejecutarla vi un problema, con esta solucion el me ordena primero por el primer campo valga la redundancia osea en este caso fecha1 y despues para cada uno de ellos me ordena fecha2 osea me explico mejor con un ejemplo, tengo 8 registros cada uno de ellos con diferente fecha2 del 1 al 10 y la mitad de ellos con fecha1 15 y la otra mitad con fecha1 20, entonces esa instruccion primero me "agrupa" los de fecha1 15 ordenados por la fecha2 y despues los otros 5 ordenados por la fecha dos osea, a eso le añado otros dos campos con fecha1 vacia, esta instruccion me los ordenaria asi
1 -- 3 -- 5 15 7 15 9 15 10 15 2 20 4 20 6 20 8 20 Pero lo que yo necesito es que me los ordene asi 1 -- 3 -- 2 20 4 20 5 15 6 20 7 15 8 20 9 15 10 15 La primera fecha solo tengo en cuenta dos escenarios que sea null y que sea diferente de null, el resto de la ordenacion la hago por la segunda fecha. No se si logre explicarme bien, es un poco enrredado pero espero que me hayan entendido. Muchas gracias por tu colaboracion y por tu tiempo y espero que me puedas ayudar con este nuevo escenario. Muchas gracias a todos ojala puedan ayudarme. Besos y abrazos |
#4
|
||||
|
||||
Me podrias inidicar cual es la estructura de la tabla, que hay primero?, hay algun autonumerado, indices, etc.
Los numeros enteros que ilustras en tu mensaje anterior corresponden a fechas dentro de un mismo mes?? Aun es confuso asi como lo planteas, los campos fecha1 y fecha2, son de tipo datetime?? o se guardan fecha y hora? Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!! |
#5
|
||||
|
||||
esa es la estructura de mi tabla, las dos fechas son TIMESTAMP y si esos numeros que puse son fechas dentro de un mismo mes, la unica forma que he encontrado hasta ahora es haces dos consultas que serian mas o menos asi
La suma de lo que hacen esas dos consultas es lo que necesito, pero en una sola consulta, no he podido dar como. De nuevo mil gracias por tu ayuda y tiempo invertido en mi problema, te estoy muy agradecida y ojala puedas seguir ayudandome . Chao besos y abrazos |
#6
|
||||
|
||||
Si primero buscas todos los fecha1 nulos, ordenados por fecha2:
Código:
select * from x where fecha1 IS NULL ORDER BY fecha2 DESC; Código:
select * from x where fecha1 IS NOT NULL ORDER BY fecha2 DESC; Pero, según veo en la tabla, fecha1 es 'not null', por lo tanto... no puede haber nulos. Seguramente me he confundido, ¿puedes aclararlo? edito: fecha2 es not null, es que lo que he escrito antes es lo que has escrito tú en el primer post.... ya estoy mareado
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Hola sisisi, que pena contigo la verdad yo tambien estoy bastante mareada con este asunto , en mitad del foro cambie los nombres, pero bueno el que puede ser null es fecha1, tal como esta en la estructura de la tabla y en los querys, y fecha2 es not null, entonces si tienes razon yo busco todos los fecha1 sean o no nulos ordenados por fecha2 PERO primero me debe ordenar los que son nulos y despues los que son no nulos, y es aqui donde tengo el problema que primero obtenga los no nulos y despues el resto.
Muchas gracias por tu atencion y colaboracion y cualquier otra cosa que necesites que aclare aca estare pendiente. Gracias besos y abrazos |
#8
|
||||
|
||||
Prueba con esto:
Esto funciona por lo menos en sql server, esto es lo que resulta: NULL NULL 01/01/2009 12:00:00 a.m. NULL NULL NULL NULL NULL 03/01/2009 12:00:00 a.m. NULL NULL NULL NULL NULL 02/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m. NULL NULL 04/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m. NULL NULL 05/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m. NULL NULL 06/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m. NULL NULL 07/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m. NULL NULL 08/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m. NULL NULL 09/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m. NULL NULL 10/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m. Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!! |
#9
|
||||
|
||||
Seguramente puedas hacerlo con "union", algo parecido a esto:
Código:
select a.* from tabla a where a.fecha1 is null union select b.* from tabla b where b.fecha1 is not null order by 1 <-- el número de campo (creo que no acepta nombres en este caso)
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Hola, quiero empezar agradeciendoles a los por la ayuda y el tiempo invertido a la solucion de mi problema, les cuento que casi es la solucion, la probe las primeras dos veces y funciono a la perfeccion, pero al modificar unos datos, unas fechas me lo ordena asi
4/1/2010 00:00:00 Null 3/1/2010 00:00:00 Null 2/1/2010 00:00:00 3/1/2010 00:00:00 2/1/2010 00:00:00 Null 1/1/2010 00:00:00 4/1/2010 00:00:00 31/12/2009 00:00:00 31/12/2009 00:00:00 De todos modos ya estoy mas cerca de la solucion gracias a ustedes, voy a segir trabajandole y cualquier otra ayuda sera muy bien recibida. Muy agradecida por toda la ayuda, besos y abrazos. |
#11
|
||||
|
||||
Hola a todos, al fin ya pude solucionar mi problema, pongo la solucion por si a alguno le puede interesar, encontre dos soluciones la primera es asi
la segunda es asi
Muchas gracias por su colaboracion y el tiempo invertido a la solucion de mi problema. Muchas gracias, chao besos y abrazos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda con dos for anidados | Nelly | Varios | 4 | 03-06-2006 22:37:22 |
Query anidados | erasmorc | SQL | 3 | 14-12-2005 00:17:36 |
Clientdatasets anidados con ADO | Johnny Q | Conexión con bases de datos | 4 | 03-11-2005 03:53:25 |
Filtros anidados.... | Phacko | Conexión con bases de datos | 2 | 19-03-2005 20:41:31 |
Select anidados | Ignacio | SQL | 5 | 23-02-2004 17:33:30 |
|