Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/04/2011, 02:03
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: porbleas con query

Código MySQL:
Ver original
  1. SELECT bici,estado
  2. (SELECT r.IdBicicleta as bici, r.IdStatusr as Estado
  3.                                             FROM reservaciones r
  4.                                             left JOIN horarios h
  5.                                             ON h.IdHorario = r.IdHorario
  6.                                             WHERE h.IdHorario = '2' and r.IdStatusr = '2'
  7. SELECT b.IdBicicleta as bici, 1  as Estado
  8. FROM bicicletas b
  9. WHERE b.IdBicicleta not in (SELECT r.IdBicicleta
  10.                                             FROM reservaciones r
  11.                                             left JOIN horarios h
  12.                                             ON h.IdHorario = r.IdHorario
  13.                                             WHERE h.IdHorario = '2' and r.IdStatusr = '2')

La primera consulta del union retorna las bicicletas que cumplen la condición

WHERE h.IdHorario = '2' and r.IdStatusr = '2'

la segunda las que no la cumplen.

Ya te pase esta solución... para que te ordene una union tienes que hacer una consulta sobre ella y ordenarla.

Si IdStatusr es 1 o 2 luego no te compliques las que no sean 2 son 1...

No entiendo como puedes tener el campo "IdStatusr" en bicicletas, Statusr no seria el estado de reserva... y por tanto estara referido a un horario no a la bici en general...


Cita:
...
SELECT b.IdBicicleta,b.IdStatusr
FROM bicicletas b
WHERE (b.IdStatusr,b.IdBicicleta) not in (SELECT r.IdBicicleta, r.IdStatusr
....
Esto esta bien?

(b.IdStatusr,b.IdBicicleta) r.IdBicicleta, r.IdStatusr
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.