比较两个表并返回两个都没有出现在mysql中的答案

时间:2014-01-12 17:13:56

标签: mysql

我遇到的问题是比较两个表,并返回两个表中没有特征的结果。我正在使用剧院式的预订和座位号码。

所以我的第一张桌子是座位表,就像这样。

row_no     area_name
 a01       front stalls
 a02       front stalls

可以使用多个区域名称,但它们都使用与上述相同的格式。对于此示例,我将仅在前档位中使用座位a01至a20。

第二个表格是预订表格,如下所示

ticket_no    row_no    date_time       customer_name
 001070714    a01      21:00 7.7.14    John Doe
 002070714    a02      21:00 7.7.14    John Doe

我想要实现的是将特定展示时间的预订座位列表与座位表中的座位总数进行比较,然后按area_name对结果进行分组,以便我希望能够实现像

这样的结果
area_name       row_no
front stalls    18

其中18是座位表中描述的20套完整座位中的免费座位数。

我如何着手实现这个答案?

EDIT 这是我到目前为止所尝试的

SELECT
DISTINCT s.area_name, row_no
FROM seat AS s
FROM booking AS b
COUNT * WHERE s.row_no != b.row_no
WHERE b.title = rammstein
WHERE s.area_name = 'front stalls'
GROUP BY s.area_name;

1 个答案:

答案 0 :(得分:0)

尝试类似:

SELECT seat_q.area_name, (seat_q.num_seats - COUNT(*) AS occupied_seats) AS free_seats
FROM booking b
WHERE row_no IN (
    SELECT s.row_no 
    FROM seat s
    WHERE s.area_name = 'front stalls'
    GROUP BY s.area_name)
JOIN
(SELECT s.row_no, s.area_name, COUNT(s.*) AS num_seats
 FROM seat s
 WHERE s.area_name = 'front stalls'
 GROUP BY s.area_name) AS seat_q
ON seat_q.row_no = b.row_no
WHERE b.date_time = '21:00, 7.7.14'