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

Problemas con consulta mysql

Estas en el tema de Problemas con consulta mysql en el foro de Mysql en Foros del Web. Hola a todos tengo un problema con una consulta, sin embargo no se si sea con la consulta o con el php. quiero empesar con ...
  #1 (permalink)  
Antiguo 07/04/2011, 09:51
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Problemas con consulta mysql

Hola a todos tengo un problema con una consulta, sin embargo no se si sea con la consulta o con el php. quiero empesar con lo que es la consulta.

Explico lo que quiero hacer, tengo 3 tablas bici y reservacion, Horario
Horario (IdHorario, Descripcion) Bici (Idbici,descripcion) reservacion (idreservacion,idbici,idhorario,status) ahora bien yo tengo que seleccionar una hora para que me pueda mostrar todas las bicis reservadas a esa hora las que estan ocupadas las muestro en rojo y las demas en verde, si no tengo nada reservada a esa hora todas las muestro en verde.

El punto es que con mi consulta me muestra todas las desocupadas pero no me respeta lo de la hora ya que si selecciono hora 1 pm me tendria que motras la 10 bicic libres que tengo pero me muestra solo las librres y desaparece las que estan ocupadas de otra hora lo que hace es que quita solo las que tengo reservadoas a cualquir hora.

Código PHP:
SELECT b.IdBicicleta FROM bicicletas b LEFT JOIN reservaciones r ON b.IdBicicleta r.IdBicicleta LEFT JOIN horarios h ON r.IdHorario h.IdHorario WHERE r.IdBicicleta IS NULL OR h.Descripcion '12:30pm - 1:30pm' Order by b.IdBicicleta ASC 
Espero su grata ayuda

Última edición por acse; 07/04/2011 a las 11:09
  #2 (permalink)  
Antiguo 08/04/2011, 05:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problemas con consulta mysql

Esto nos da la bicicletas reservadas en una hora

Código MySQL:
Ver original
  1. SELECT r.IdBicicleta
  2. FROM reservaciones r
  3. INNER JOIN horarios h
  4. ON r.IdHorario = h.IdHorario
  5. WHERE h.Descripcion = '12:30pm - 1:30pm'

luego

Código MySQL:
Ver original
  1. SELECT b.IdBicicleta
  2. FROM Bici b
  3. WHERE b.IdBicicleta not in (SELECT r.IdBicicleta
  4.                                             FROM reservaciones r
  5.                                             INNER JOIN horarios h
  6.                                             ON r.IdHorario = h.IdHorario
  7.                                             WHERE h.Descripcion = '12:30pm - 1:30pm')

nos da las libres...

Si unes los resultados podrias tener una solucion

Código MySQL:
Ver original
  1. SELECT r.IdBicicleta, "Ocupada" as estado
  2. FROM reservaciones r
  3. INNER JOIN horarios h
  4. ON r.IdHorario = h.IdHorario
  5. WHERE h.Descripcion = '12:30pm - 1:30pm'
  6. SELECT b.IdBicicleta, "Libre" as estado
  7. FROM Bici b
  8. WHERE b.IdBicicleta not in (SELECT r.IdBicicleta
  9.                                             FROM reservaciones r
  10.                                             INNER JOIN horarios h
  11.                                             ON r.IdHorario = h.IdHorario
  12.                                             WHERE h.Descripcion = '12:30pm - 1:30pm')

a partir de aqui php se encarga de pintar del color que toque cada una.

Es una solución muy directa quizas se podria buscar una mas sofisticada y eficiente....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/04/2011, 08:56
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problemas con consulta mysql

Hola te agradezco tu respuesta voy a probar y te estare informando de mi resultado en caso de que me falle algo.

saludos
  #4 (permalink)  
Antiguo 19/04/2011, 16:15
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 8 meses
Puntos: 0
Exclamación Respuesta: Problemas con consulta mysql

Hola migo estube checando tu query me funciono perfectamente pero no podia tomar como referencia el campo que estado para pintar mi php por lo que tube que poner un capo real que se llamava IdStatusr en la tabla bici y en la tabla resetrvacion pero ahora me duplica el dato me muesstra todo en libre y me muestra tambien la que esta ocupada con el estado = 2 ya estuve jugadno don 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

  #5 (permalink)  
Antiguo 20/04/2011, 02:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problemas con consulta mysql

Ya te he respondido en el otro hilo.... no repitas mensajes.

No entiendo por que no puedes usar el campo estado para pintar con el php....

Para php es lo mismo distinguir entre 1 o 2 de un campo de la tabla o entre "Libre" u "Ocupado" de un campo creado en la query...

Le es exactamente igual

if ($estado=="Libre")

o

if ($estado==2)


PHP usa el resultado de la query pasado a un array o a lo que sea y una vez tiene el resultado en memoria no queda ningun rastro de donde ha salido el valor...

Si es un problema de nombre del campo pon el alias idStatusr...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (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: Problemas con consulta mysql

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: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:41.