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

intercarlar dos select por fecha.

Estas en el tema de intercarlar dos select por fecha. en el foro de PostgreSQL en Foros del Web. Hago una busqueda en la que tengo un campo en al BBDD que es, si esta entrevistado. Y en mi aplicación puedo elegir si, no ...
  #1 (permalink)  
Antiguo 04/02/2009, 01:36
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 12 años
Puntos: 5
intercarlar dos select por fecha.

Hago una busqueda en la que tengo un campo en al BBDD que es, si esta entrevistado.
Y en mi aplicación puedo elegir si, no o todos.

Si es si, perfecto busco los que estan entrevistados y los organizo por la fecha de entrevista.

Si es no, perfecto tambien, busco los que no están entrevistasdos y los organizo por la fecha de alta.

El problema es que si es todos, tengo que organizarlos por la fecha de entrevista los entrevistados y por fecha de alta los no entrevistados.

¿Se puede hacer esto?
Muchas gracias.

pd: Por favor, responder mi pregunta y no otra cosa.
  #2 (permalink)  
Antiguo 04/02/2009, 03:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: intercarlar dos select por fecha.

Cita:
pd: Por favor, responder mi pregunta y no otra cosa.
De acuerdo
Cita:
¿Se puede hacer esto?
si.
  #3 (permalink)  
Antiguo 04/02/2009, 03:11
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 12 años
Puntos: 5
Respuesta: intercarlar dos select por fecha.

Que mala fe tienes...
  #4 (permalink)  
Antiguo 05/02/2009, 08:22
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: intercarlar dos select por fecha.

da más información y pon un ejemplo para que sea más facil ayudarte.

Salu2
  #5 (permalink)  
Antiguo 06/02/2009, 01:36
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 12 años
Puntos: 5
Respuesta: intercarlar dos select por fecha.

Sería una combinación de las siguiente dos querys.

SELECT * from candidatos WHERE "ENTREVISTADO"=true ORDER BY "FECHA_ENTREVISTA" DESC;
SELECT * from candidatos WHERE "ENTREVISTADO"=false ORDER BY "FECHA_ALTA" DESC;


Pero intercaladas...osea quedarían ordenados todos por la fecha, pero unos cogeriamos la fecha de entrevista, y lo que no tienen aun entrevista por la fecha de alta.

Muchas gracias.
  #6 (permalink)  
Antiguo 06/02/2009, 02:45
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: intercarlar dos select por fecha.

Código:
pruebas=# \d candidatos
                            Table "public.candidatos"
    Column    |  Type   |                        Modifiers
--------------+---------+---------------------------------------------------------
 id           | integer | not null default nextval('candidatos_id_seq'::regclass)
 f_alta       | date    |
 f_entrevista | date    |
 entrevistado | boolean |
Indexes:
    "candidatos_pkey" PRIMARY KEY, btree (id)

pruebas=# insert into candidatos (f_alta, entrevistado )select now()::date + n* interval '1 day', false from generate_series(1,10) as n;
INSERT 0 10
pruebas=# insert into candidatos (f_entrevista, entrevistado )select now()::date + n* interval '1 day', true from generate_series(1,10) as n;
INSERT 0 10

select * from candidatos order by(COALESCE (f_alta, f_entrevista));
 id |   f_alta   | f_entrevista | entrevistado
----+------------+--------------+--------------
  1 | 2009-02-07 |              | f
 11 |            | 2009-02-07   | t
  2 | 2009-02-08 |              | f
 12 |            | 2009-02-08   | t
  3 | 2009-02-09 |              | f
 13 |            | 2009-02-09   | t
  4 | 2009-02-10 |              | f
 14 |            | 2009-02-10   | t
 15 |            | 2009-02-11   | t
  5 | 2009-02-11 |              | f
 16 |            | 2009-02-12   | t
  6 | 2009-02-12 |              | f
 17 |            | 2009-02-13   | t
  7 | 2009-02-13 |              | f
  8 | 2009-02-14 |              | f
 18 |            | 2009-02-14   | t
  9 | 2009-02-15 |              | f
 19 |            | 2009-02-15   | t
 10 | 2009-02-16 |              | f
 20 |            | 2009-02-16   | t
(20 rows)
Un ejemplo vale más que mil explicaciones!

Salu2
  #7 (permalink)  
Antiguo 06/02/2009, 04:50
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 12 años
Puntos: 5
Respuesta: intercarlar dos select por fecha.

¡¡¡Muchas gracias!!!
  #8 (permalink)  
Antiguo 25/02/2009, 06:59
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 12 años
Puntos: 5
Respuesta: intercarlar dos select por fecha.

Un cosa Seyko tengo un problema con la query...es que la query funciona si esta vacio fecha_alta o fecha_entrevista...

En mi aplicacion tiene valor los dos...Ya que primero se da de alta a todos y luego algunos si y otro no tiene entrevista...

Entoces si tiene fecha entrevista manda esa fecha y si no tiene manda la fecha de alta, pero lo tiene fecha entrevista, tambén tiene de alta...

Entoces seria sobre esa query que me has dicho, pero con la peculiaridad, de que ordene por "FECHA_ENTREVISTA" si es distinta de (0001/01/01), que es valor que tiene por defecto, si y "FECHA_ENTREVISTA"=(0001/01/01), entonces por la "FECHA_ALTA"...

¿Me podrías ayudar que me pierdo?
Gracias...
  #9 (permalink)  
Antiguo 26/02/2009, 11:11
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: intercarlar dos select por fecha.

Primero, ¿por qué tienes una fecha por defecto 01/01/01 ? Lo correcto sería tenerla a null

ahora si lo quieres hacer asi,
Código:
select *
from candidatos 
order by(CASE WHEN f_alta is not null AND f_alta != '01/01/01'::date THEN f_alta ELSE f_entrevista END);
Salu2
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 02:26.