Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

porbleas con query

Estas en el tema de porbleas con query en el foro de Mysql en Foros del Web. Hola migos como podria hacerle con este query para que no duplica el dato me muestra todo en libre y me muestra tambien la que ...
  #1 (permalink)  
Antiguo 19/04/2011, 16:20
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Exclamación porbleas con query

Hola migos como podria hacerle con este query para que no duplica el dato me muestra todo en libre y me muestra tambien la que esta ocupada con el estado = 2 ya estuve jugando con el inner y left pero no lo logro solucionar me podria ayudar .

modifique el query para que leyera ese campo aqui esta
Código PHP:
SELECT r.IdBicicletar.IdStatusr 
                                            FROM reservaciones r 
                                            left JOIN horarios h 
                                            ON h
.IdHorario r.IdHorario 
                                            WHERE h
.IdHorario '2' and r.IdStatusr '2'
UNION ALL
SELECT b
.IdBicicleta,b.IdStatusr
FROM bicicletas b
WHERE 
(b.IdStatusr,b.IdBicicletanot in (SELECT r.IdBicicletar.IdStatusr 
                                            FROM reservaciones r 
                                            left JOIN horarios h 
                                            ON h
.IdHorario r.IdHorario 
                                            WHERE h
.IdHorario '2' and r.IdStatusr '2' Order by b.IdBicicleta asc
imagen con lo que muestra

  #2 (permalink)  
Antiguo 20/04/2011, 02:03
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.
  #3 (permalink)  
Antiguo 20/04/2011, 13:22
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: porbleas con query

Hola

Pues bien entendiendo lo que me comentaste ya lo solucione tenias razon no estaba pintando bien en mi php, te agradesco mucho y gracias. Disculpa mi ignorancia

Etiquetas: query
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:53.