- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query su due tabelle
-
Query su due tabelle
Buonasera a tutti,
due tabelle, un chiama utente e l'altra appuntamenti
[HTML]
Tabella utente costituita da:
id_utente cognome
1 pino
2 pippo
[/HTML]
L'orario degli appuntamenti vanno dalle ore 09:00 alle 17:00 per entrambi gli utentiEsempio N°1:
Tabella appuntamenti costituita da:
[HTML]
Id giorno_appuntamento ora_inizio ora_fine id_utente
1 2020-04-20 09:00 10:30 1
2 2020-04-20 09:00 11:00 2
[/HTML]
Gli orari fino alle 17 sono disponibili per entrambi gli utenti e la query mi deve restituire che c'è ancora posto.Esempio N°2
Tabella appuntamenti costituita da:
[HTML]
Id giorno_appuntamento ora_inizio ora_fine id_utente
1 2020-04-20 09:00 17:00 1
2 2020-04-20 09:00 11:00 2
[/HTML]
In questo caso l'utente 1 è pieno ma l'utente 2 ha ancora disponibilità fino alle 17 quindi anche quì la query mi deve restituire che c'è ancora posto.Esempio N°3
Tabella appuntamenti costituita da:
[HTML]
Id giorno_appuntamento ora_inizio ora_fine id_utente
1 2020-04-20 09:00 17:00 1
2 2020-04-20 09:00 17:00 2
[/HTML]
In questo caso tutte e due gli utenti non hanno più disponibilità quindi la query mi deve restituire che non c'è ancora posto.Io ho fatto in questo modo:
[PHP]$query_a = "SELECT * FROM utenti";
$Recordset_a = mysql_query($query_a, $aic_grosseto) or die(mysql_error());
while($row_a=mysql_fetch_row($Recordset_a))
{
$id_utenti=$row_a[0];
$query_Recordset3 = "SELECT * FROM appuntamento WHERE giorno_app='$day_cont' and ora_inizio<='$ora_cont' and ora_fine>='$ora_cont' and id_utente='$id_utenti'";
$Recordset3 = mysql_query($query_Recordset3, $aic_grosseto) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);
echo $totalRows_Recordset3;
}}[/PHP]Però così non va bene.
-
Buongiorno a tutti,
ho provato in questo modo:[PHP]$query_Recordset3 = "SELECT * FROM utenti WHERE EXISTS (SELECT * FROM appuntamento WHERE appuntamento.giorno_app='$day_cont' and appuntamento.ora_inizio<='$ora_cont' and appuntamento.ora_fine>='$ora_cont' and appuntamento.id_utente=utenti.id_utente)";
$Recordset3 = mysql_query($query_Recordset3, $aic_grosseto) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);[/PHP]Ma purtroppo non funziona perchè mi restituisce che non c'è posto anche se solo un utente è pieno ovvero ha gli appuntamenti dalle 09:00 alle 17:00, come nell'esempio N°2, quando in realtà l'altro utente ha ancora posto.
Cosa ne pensate?
-
il controllo che dovrai fare è che se l'orario inizio del nuovo appuntamento è compresa tra inizio e fine sul db e la data fine è compresa tra inizio e fine e maggiore di 17 allora è full l'orario che stai scegliendo. una cosa del genere. così tu stai usando solo l'ora di start e mai l'ora di end.