Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2010
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 19
lina maria Va por buen camino
Código SQL [-]
CREATE TABLE "X" 
  "i_cod_1" NUMERIC NOT NULL, 
  "i_cod_2" NUMERIC NOT NULL, 
  "FECHA2" TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, 
  "i_cod_3" NUMERIC, 
  "i_cod_4" NUMERIC, 
  "FECHA1" TIMESTAMP(0) WITHOUT TIME ZONE

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

Código SQL [-]
select * from x 
where fecha1 IS NULL
  ORDER BY fecha2 DESC';
Código SQL [-]
select * from x 
where fecha1 IS NOT NULL
 ORDER BY fecha2 DESC';

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
Responder Con Cita
  #2  
Antiguo 04-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Si primero buscas todos los fecha1 nulos, ordenados por fecha2:

Código:
select * from x 
where fecha1 IS NULL
ORDER BY fecha2 DESC;
Y luego buscas todos los fecha1 no nulos, ordenados por fecha2:

Código:
select * from x 
where fecha1 IS NOT NULL
ORDER BY fecha2 DESC;
Entonces, lo que estás buscando es todos los fecha1 (sean nulos o no) ordenados por fecha2.

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
Responder Con Cita
  #3  
Antiguo 04-01-2010
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 19
lina maria Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 04-01-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
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)
edito: se me adelantó afunez2007
Responder Con Cita
  #5  
Antiguo 05-01-2010
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 19
lina maria Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 07-01-2010
Avatar de lina maria
lina maria lina maria is offline
Miembro
 
Registrado: abr 2008
Posts: 53
Poder: 19
lina maria Va por buen camino
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
Código SQL [-]
select fecha1, fecha2
from tablaX
order by
(case fecha1 is null then fecha1 else
fecha2 end) desc, fecha2 DESC

la segunda es asi
Código SQL [-]
select fecha1, fecha2
case when fecha1 is null then 0 else 1 end as ordem
from tablaX
  ORDER BY
   ordem, fecha2 DESC

Muchas gracias por su colaboracion y el tiempo invertido a la solucion de mi problema.

Muchas gracias, chao besos y abrazos
Responder Con Cita
  #7  
Antiguo 04-01-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 19
afunez2007 Va por buen camino
Lightbulb

Prueba con esto:
Código SQL [-]
SELECT     i_cod_1, i_cod_2, FECHA2, i_cod_3, i_cod_4, FECHA1
FROM         X
WHERE     (FECHA1 IS NULL)
UNION ALL
SELECT     i_cod_1, i_cod_2, FECHA2, i_cod_3, i_cod_4, FECHA1
FROM         TUTABLA AS X_1
WHERE     (FECHA1 IS NOT NULL)

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!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con dos for anidados Nelly Varios 4 03-06-2006 21:37:22
Query anidados erasmorc SQL 3 13-12-2005 23:17:36
Clientdatasets anidados con ADO Johnny Q Conexión con bases de datos 4 03-11-2005 02:53:25
Filtros anidados.... Phacko Conexión con bases de datos 2 19-03-2005 19:41:31
Select anidados Ignacio SQL 5 23-02-2004 16:33:30


La franja horaria es GMT +2. Ahora son las 00:09:26.


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