From: | Miguel <mmiranda(at)123(dot)com(dot)sv> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Multilpes JOIN |
Date: | 2005-10-13 17:05:26 |
Message-ID: | 434E93D6.6030006@123.com.sv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola, estoy emproblemado con una consulta algo compleja que no se si
sera posible hacerla, por ello acudo a los gurus de la lista, es un join
de 4 tablas:
radius=# select * from planes_horarios;
idplan | idhorario
--------+-----------
1 | 1
(1 row)
radius=# select * from horarios;
idhorario | horario
-----------+-----------------
2 | tarifa_reducida
1 | tarifa_plena
(2 rows)
radius=# select * from horarios_promociones;
idhorario | fecha_inicio | fecha_fin | hora_inicio | hora_fin
-----------+--------------+------------+-------------+----------
1 | 2005-10-12 | 2005-10-31 | 08:00:00 | 23:59:59
2 | 2005-10-12 | 2005-10-31 | 00:00:00 | 07:59:59
(2 rows)
radius=# select * from tarifas;
idhorario | idbanda_origen | idbanda_destino | tarifa
-----------+----------------+-----------------+--------
1 | 10 | 20 | 0.2000
2 | 10 | 20 | 0.1700
(2 rows)
Yo quiero saber que tarifa (plena o reducida) voy a aplicar, yo ya se de
antemano el idplan y idbanda_origen y idbanda_destino, yo se que puedo
hacerlo con dos consultas:
SELECT INTO idhorario_ok phor.idhorario
FROM planes_horarios phor
INNER JOIN horarios hor USING (idhorario)
INNER JOIN horarios_promociones horp USING (idhorario)
WHERE phor.idplan = idplan
AND CURRENT_DATE
BETWEEN horp.fecha_inicio AND horp.fecha_fin
AND CURRENT_TIME
BETWEEN horp.hora_inicio AND horp.hora_fin;
Si se corre en este momendo esto devolveria 1, luego:
SELECT tarifa
FROM tarifas
WHERE idhorario = idhorario_ok
AND idbanda_origen = 10
AND idbanda_destino = 20;
esto devolveria 0.20
Pero me gustaria hacerlo en una sola consulta, ya que este es un
ejemplo, en realidad existe tambien la tabla horarios_general (que es el
dia a dia del plan tarifario, y dependiendo del dia si es navidad, dia
de la madre, etc habra que aplicar la tarifa promocional).
No quisiera tener que hacer 4 querys saber la tarifa.
No se si me explique bien, si necesitan mayores detalles con gusto los
puedo proporcionar.
---
Miguel
From | Date | Subject | |
---|---|---|---|
Next Message | WILLIAM PARRA | 2005-10-13 20:33:20 | Comunidad Postgresql Colombia |
Previous Message | Josue Andres Dorantes Rios | 2005-10-13 16:59:13 | Problema cambiando PWD a usuario |