Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/10/2014, 08:55
Zeus3718
 
Fecha de Ingreso: octubre-2014
Ubicación: caracas
Mensajes: 1
Antigüedad: 9 años, 5 meses
Puntos: 0
Consulta POSTGRESQL

Buenos dias por aca me encuentro desde hace 2 dias tratando de sacar un QUERY que se me ha complicado un poco, les explico

Tengo unas solicitudes de transportes que son guardadas en la base de datos las mismas deben ser atendidas y tienen una hora y fecha de inicio y una hora y fecha de finalización,
cual es el problema? yo quisiera mostrar cuales son los vehiculos que estan disponibles de acuerdo a las otras solicitudes que fueron aprobadas y estan por iniciar o ya estan siendo atendidas es decir de acuerdo a la hora y fecha de inicio y la hora y fecha de finalización de las otras solicitudes que ya se encuentran siendo atendidas y tambien mostrar los vehiculos que estan disponibles pero que no estan atendiendo solicitudes es decir que ya finalizaron la atencion de solicitudes o simplemente que no han atendido solicitudes (nuevos).

YO tengo unas tablas dentro de la base de datos para este caso que esta conformada de la siguiente manera:

tabla: tbl_status
tiene los siguientes campos id_status y descripcion

5 - Esperando Autorización
6 - Autorizado / Por Iniciar
7 - En Ejecución
8 - Finalizado

hasta ahora he tenido exito con que me muestre las placas que estan disponibles deacuerdo a las fechas (Inicio y finalización) pero no he logrado que ademas de eso me muestre las placas disponibles que no han atendido solicitudes es decir que estan en la tabla 'tbl_placa' pero no en la tabla 'tbl_solciitud' aqui mi query ahsta ahora


Código SQL:
Ver original
  1. SELECT
  2. (array_to_string( array(
  3. SELECT CASE
  4. WHEN ((('2014-10-01' NOT BETWEEN s2.fecha_salida AND s2.fecha_regreso)) AND
  5. (('2014-10-10' NOT BETWEEN s2.fecha_salida AND s2.fecha_regreso))) AND (s2.id_status = 6 OR s2.id_status = 7) THEN '|' || CAST(pl2.codigo AS text)
  6. WHEN (( array_to_string( array(SELECT pl4.codigo FROM tbl_vehiculo v4 LEFT JOIN tbl_caracteristicas_vehiculo cv4 ON cv4.id_caracteristicas_vehiculo = v4.id_caracteristicas_vehiculo LEFT JOIN tbl_placa pl4 ON pl4.id_placa = cv4.id_placa EXCEPT SELECT pl3.codigo FROM tbl_solicitud s3 LEFT JOIN tbl_solicitud_vehiculo sv3 ON sv3.id_solicitud = s3.id_solicitud LEFT JOIN tbl_vehiculo v3 ON v3.id_vehiculo = sv3.id_vehiculo LEFT JOIN tbl_caracteristicas_vehiculo cv3 ON cv3.id_caracteristicas_vehiculo = v3.id_caracteristicas_vehiculo LEFT JOIN tbl_placa pl3 ON pl3.id_placa = cv3.id_placa WHERE codigo IS NOT NULL), ',')))
  7. THEN '|' || CAST(pl2.codigo AS text)
  8.  
  9.   END AS vehiculo  FROM tbl_vehiculo vh2
  10. LEFT JOIN tbl_solicitud_vehiculo sv2 ON sv2.id_vehiculo = vh2.id_vehiculo
  11. LEFT JOIN tbl_solicitud s2 ON s2.id_solicitud = sv2.id_solicitud
  12. LEFT JOIN tbl_caracteristicas_vehiculo cv2 ON cv2.id_caracteristicas_vehiculo = vh2.id_caracteristicas_vehiculo
  13. LEFT JOIN tbl_placa pl2 ON pl2.id_placa = cv2.id_placa
  14. ),',') )

el error que me da es:

ERROR: el argumento de CASE/WHEN debe ser de tipo boolean, no tipo text
LÍNEA 6: when (( array_to_string( array(select pl4.codigo from tbl_v

Última edición por gnzsoloyo; 25/10/2014 a las 09:07