Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/02/2014, 02:34
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta que devuelva cantidad variable de registros

Casi pero aún faltan cosas....

Antes que nada las distintas querys que formen parte de una query union deben tener los mismos campos..... Si la lista de campos de la salida es

Poliza | auto | nombre | detalle

deberiamos tener claro a que campos corresponden de las tablas....

Poliza corresponde a Nic (que esta en todas las tablas importantes)

Auto no se a que campo corresponde (en el ejemplo es 0,1,2 o 3)
Podria ser el Id_Auto, y 0 constante para lo que no son autos?

Nombre no se a que campo corresponde (General,Matricula,Marca,Modelo,Radio)
Parece ser "General" constante para lo que no son autos
Para los autos parece ser el nombre de la característica que viene a continuación, aqui tenemos un problema, lo mas parecido serian los nombres de los campos de la tabla Auto y los de Detalle_auto (estos ultimos transformados de "Tiene_Radio" a "Radio").


detalle Seria descripción de la tabla detalles, para lo que no son autos y una diversidad de campos para los autos.... (Tambien trans formados de "Tiene_Radio" 1 o 0 a "Tiene" o "No Tiene").

Si lo consegues sera una query muy MUY ineficiente, seria mejor listar una cosa por un lado y la otra por otro....

Primera parte, lo que no son autos

Código MySQL:
Ver original
  1. SELECT Polizas.Nic AS Poliza,
  2.              0 AS Auto,
  3.              'General' AS Nombre,
  4.              Detalles.Descripcion AS Detalle
  5. FROM Polizas INNER JOIN Detalles
  6.           ON Polizas.Nic = Detalles.Nic
  7. WHERE NOW() BETWEEN Polizas.Fecha_desde AND Polizas.Fecha_Hasta
  8.    AND Polizas.Seccion = 2

El problema de los autos es que pretendes convertir lo que son campos (columnas) en registros (filas).

Código MySQL:
Ver original
  1. FROM Polizas INNER JOIN
  2.              (Autos LEFT JOIN Detalle_Auto
  3.                       ON Autos.id_Auto=Detalle_Autos.id_Auto)
  4.              ON Polizas.Nic = Autos.Nic
  5. WHERE NOW() BETWEEN Polizas.Fecha_desde AND Polizas.Fecha_Hasta
  6.    AND Polizas.Seccion = 1

Esto te da los datos de los autos pero en en un registro por auto....

A partir de estos dos resultados y con programación externa buscaria el resultado que pides...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.