Foros del Web » Programando para Internet » PHP »

Consulta entre dos tablas

Estas en el tema de Consulta entre dos tablas en el foro de PHP en Foros del Web. Buenos dias, no se si me pueden ayudar . Tengo que hacer un sistema de reservas donde no solo se verian las mesas reservadas, si ...
  #1 (permalink)  
Antiguo 06/10/2021, 07:26
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 20 años, 1 mes
Puntos: 0
Consulta entre dos tablas

Buenos dias, no se si me pueden ayudar .
Tengo que hacer un sistema de reservas donde no solo se verian las mesas reservadas, si no tambien las no reservadas, en un dia y turno.

Tengo en una tabla asi
idmesa
mesa
aqui se guardan todas las mesas del local


y otra tabla donde se guardan las reservas
idreserva
idmesa
nombre
fecha
turno

Lo que estoy haciendo es una busqueda por fecha y turno y la lista me trae obviamente las reservas de la tabla. Pero quisiera que tambien me traiga las mesas que no estan reservadas, de manera que en la misma tabla ya ponga un boton para cambiar el estado.

actualmente me trae algo asi

Fecha Turno. Mesa. Nombre. Estado
01/10/2021. Turno1. Mesa 2. Raul Torres. Reservado
01/10/2021. Turno1. Mesa 3. Ana Ramirez. Reservado

yo quisiera que en esa consulta saliera asi ( donde se vean todas las mesas de la tabla mesa)


Fecha Turno. Mesa. Nombre. Estado
01/1002021. Turno 1. Mesa 1. Vacio. Disponible
01/10/2021. Turno1. Mesa 2. Raul Torres. Reservado
01/10/2021. Turno1. Mesa 3. Ana Ramirez. Reservado
01/1002021. Turno 1. Mesa 4. Vacio. Disponible
01/1002021. Turno 1. Mesa 5. Vacio. Disponible
01/1002021. Turno 1. Mesa 6. Vacio. Disponible

No se si puede ser realizado con consulta, o entodo caso si es manejable cuando lleno el datatable.

Gracias
  #2 (permalink)  
Antiguo 06/10/2021, 13:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.538
Antigüedad: 10 años, 2 meses
Puntos: 969
Respuesta: Consulta entre dos tablas

Con un LEFT JOIN te basta.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 06/10/2021, 16:57
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Consulta entre dos tablas

Intente con left join, y aparecen todas las mesas

Select b.idmesa, b.mesa, r.nombre, r.fecha ,r .idturno from tblmesa b left join tblreservar on b.idmesa=r.idmesa;

pero al ponerle el filtro del idturno y fecha ya no aparecen las mesas sin reserva
solo las que estan reservadas
  #4 (permalink)  
Antiguo 06/10/2021, 21:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.538
Antigüedad: 10 años, 2 meses
Puntos: 969
Respuesta: Consulta entre dos tablas

En la misma condición del LEFT JOIN intenta añadir una segunda condición para el turno y otra más para la fecha, algo así:

Código MySQL:
Ver original
  1. ...ON b.idmesa = r.idmesa AND r.turno = 'VALOR X' AND r.fecha = 'FECHA X'
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 07/10/2021, 06:44
 
Fecha de Ingreso: febrero-2010
Ubicación: valencia
Mensajes: 140
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Consulta entre dos tablas

yo usaria unos BETWEEN y previamente le doy unos valores en caso de que no le asignes nada en la consulta para que se muestren todos

$turno1=1;
$turno2 =100;

si seleccionaste un turno en un formulario previo para mostrar los datos entonces reemplazo los valores del turno


if ((!empty($_POST["turno1"])) and (!empty($_POST["turno2"]))) { si las variables que vienen del formulario no estan vacias reemplazo los valores de las variables inicializadas con los nuevos valores

$turno1=$_POST["turno1"];
$turno2 =$_POST["turno1"];

} else { // me quedo con los valores iniciales

}

y luego aplico la consulta

WHERE r.turno BETWEEN $turno1 AND $turno2;


y esto mismo lo haria con las fechas dandole valor inicialmente antes de consultar si en el formulario previo seleccionaron o no un rango


$fecha1=01/10/1999;
$fecha2=CONVERT(VARCHAR(10), GETDATE(), 103);



La zona horaria es GMT -6. Ahora son las 09:47.