Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/02/2014, 11:04
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Consulta que devuelva cantidad variable de registros

Hola gente, el titulo del tema no es muy afortunado, pero nose bien como expresar lo que quiero hacer.

Tengo estas 5 tablas:

** Polizas **
-> Nic (PK)
-> Seccion (FK)
-> Vigente_Desde
-> Vigente_Hasta
-> [...]

** Secciones **
-> Id (PK)
-> Es_Auto (Integer boolean 1/0)
-> [...]

** Detalles **
-> Nic (FK)
-> Descripcion (Varchar)

** Autos **
-> Id_Auto (PK)
-> Nic (FK)
-> Matricula
-> Marca
-> Modelo
-> [...]

** Detalle_Auto **
-> Id_Auto (FK)
-> Tiene_Radio (Integer boolean 1/0)
-> [...]

La estructura de las tablas no puedo modificarlas, ya que son de un sistema que ya esta hecho (y no lo hice yo), así que tendría que resolver esto solo con un select.

Lo que quiero hacer es, para las pólizas que estén vigentes, (NOW() BETWEEN Polizas.Fecha_desde AND Polizas.Fecha_Hasta) Ver si pertenecen a una seccion que sea de autos, si es asi, devolver la matricula, marca, modelo y si tiene radio, ademas de todos los detalles asociados a la poliza. Si no es auto, solo devolver los detalles asociados.


Para que se den una idea esto es para un sistema hibrido, esta consulta voy a tener que ejecutarla en mysql y en sql server 2000

Tiene que funcionar para todas las polizas en una sola vez.
Esta es la consulta tal como la tengo hasta ahora:

Código MySQL:
Ver original
  1. (SELECT Polizas.Nic AS Codigo_Poliza, 'Detalle:' AS Nombre, Detalles.Descripcion AS Descripcion
  2. FROM Polizas
  3. INNER JOIN Detalles ON Polizas.Nic = Detalles.Nic
  4. WHERE NOW() BETWEEN Polizas.Fecha_desde AND Polizas.Fecha_Hasta)
  5.  
  6.  
  7. (SELECT Polizas.Nic AS Codigo_Poliza, 'Matricula:' AS Nombre, Autos.Matricula AS Descripcion
  8. FROM Polizas
  9. INNER JOIN Secciones ON Polizas.Seccion = Secciones.Id
  10. INENR JOIN Autos ON Polizas.Nic = Autos.Nic
  11. WHERE NOW() BETWEEN Polizas.Fecha_desde AND Polizas.Fecha_Hasta AND Secciones.Es_Auto = 1)

Preguntas:
1-> La unica forma de hacerlo es agregando mas union y mas consultas por cada campo?
2-> Como podria ordenar el resultado de todas las union por Nic?
3-> Que es lo que tendria que cambiarle para que funcione en sql server 2000 ademas de en mysql?

Muchas gracias
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios