I am having trouble with a select statement. What I have so far is this –
SELECT COUNT(booked.desk_id),
name,
desk.desk_id,
phone,
fax,
dock,
pc
FROM desk, booked
WHERE desk.desk_id = booked.desk_id
AND booking_id >=1
AND location = "Cheltenham"
Which outputs
"12" "Desk 1" "1" "1" "0" "0" "1"
Which is close to what I want, but there is another desk in the desk table called Desk 2, which is it completely ignoring. And indeed, if there are bookings for Desk 2 it includes their count in what it is showing as a count for Desk 1…
Entire table strucutres is as follows:
table "booked"
INSERT INTO `booked` (`id`, `booking_id`, `desk_id`, `member_id`, `date_booked`) VALUES
(246, 1358121601, 1, 1, 'Monday 14th January at 4:40pm'),
(247, 1358121602, 1, 1, 'Monday 14th January at 4:40pm'),
(248, 1358121604, 1, 1, 'Monday 14th January at 4:40pm'),
(249, 1358121603, 1, 1, 'Monday 14th January at 4:40pm'),
(250, 1358121606, 1, 1, 'Monday 14th January at 4:40pm'),
(251, 1358121605, 1, 1, 'Monday 14th January at 4:40pm'),
(252, 1358121607, 2, 1, 'Monday 14th January at 4:40pm'),
(253, 1358121609, 2, 1, 'Monday 14th January at 4:40pm'),
(254, 1358121608, 2, 1, 'Monday 14th January at 4:40pm'),
(255, 1358121610, 2, 1, 'Monday 14th January at 4:40pm'),
(256, 1358121612, 2, 1, 'Monday 14th January at 4:40pm'),
(257, 1358121611, 2, 1, 'Monday 14th January at 4:40pm');
table "desk"
INSERT INTO `desk` (`location`, `desk_id`, `name`, `phone`, `fax`, `dock`, `pc`) VALUES
('Cheltenham', 1, 'Desk 1', 1, 0, 0, 1),
('Cheltenham', 2, 'Desk 2', 1, 1, 0, 1);
What I need help with is how to correctly structure the statement so it will output individual rows for each desk with it’s relevant information.
You are missing a
GROUP BYto go along with your aggregate function:In MySQL you do not have to
GROUP BYall fields in the select list, but in other RDBMS you would have to use:Based on your sample data and comment, you can use:
See SQL Fiddle with Demo
If you want to do this without the subquery:
See SQL Fiddle with Demo