diff --git a/doc/booking_query_2_of_2.all_users_unbooked.sql b/doc/booking_query_2_of_2.all_users_unbooked.sql new file mode 100644 index 0000000..335441d --- /dev/null +++ b/doc/booking_query_2_of_2.all_users_unbooked.sql @@ -0,0 +1,22 @@ +-- Display all booked users (regardless of booked room) +-- restrict to unbooked users +SELECT + b.tour_id, + b.room_id, + b.user_id, + u.name as user_name, + tr.capacity, + COALESCE(tr.name,'Ungebucht') as room_name, + COALESCE(tr.name,'ZZZZZZZZZ') as room_sort_order +FROM + users u, + bookings b +LEFT JOIN tour_rooms as tr + ON b.room_id = tr.id +WHERE + b.tour_id= 17 + AND + b.user_id = u.id + AND + capacity is null +; \ No newline at end of file diff --git a/motorradig/app/Http/Controllers/TourController.php b/motorradig/app/Http/Controllers/TourController.php index b671ea3..3fc65ff 100644 --- a/motorradig/app/Http/Controllers/TourController.php +++ b/motorradig/app/Http/Controllers/TourController.php @@ -149,29 +149,60 @@ class TourController extends Controller */ private function fetch_rooms($tour_id) { - // tour_room based display ( Suppresses users without room) - $sql="SELECT + // - all existing rooms with booked users (if any) + // - all users without room + $sql=" + SELECT qry.tour_id, qry.room_id, - b.user_id, + u.id as user_id, + u.name as user_name, qry.capacity, - qry.room_name, COALESCE(qry.room_name,'Ungebucht') room_name, COALESCE(qry.room_name,'ZZZZZZZZZ') room_sort_order - FROM ( - SELECT - tr.tour_id, - tr.id as room_id, - tr.capacity, - tr.name as room_name - FROM - tour_rooms tr - WHERE + FROM + ( + SELECT + tr.tour_id, + tr.id as room_id, + tr.capacity, + tr.name as room_name, + b.user_id + FROM + tour_rooms tr + LEFT JOIN bookings as b + ON b.tour_id = tr.tour_id AND b.room_id = tr.id + WHERE tr.tour_id= ".$tour_id." - ) qry LEFT JOIN bookings as b - ON b.tour_id = qry.tour_id AND b.room_id=qry.room_id - ORDER BY 6,4 - ;"; + ) qry + LEFT JOIN users as u + ON qry.user_id = u.id + + UNION + + -- unbooked tour users + SELECT + b.tour_id, + b.room_id, + b.user_id, + u.name as user_name, + tr.capacity, + COALESCE(tr.name,'Ungebucht') as room_name, + COALESCE(tr.name,'ZZZZZZZZZ') as room_sort_order + FROM + users u, + bookings b + LEFT JOIN tour_rooms as tr + ON b.room_id = tr.id + WHERE + b.tour_id= ".$tour_id." + AND + b.user_id = u.id + AND + capacity is null + ORDER BY room_name, user_name + ; + "; $rooms=DB::select($sql); return($rooms); diff --git a/tools/motorradig_2022-05-11_072937.sql b/tools/motorradig_2022-05-11_072937.sql new file mode 100644 index 0000000..e69de29