将一些数据库值的计数“链接”到一个数据库值(mySQL)

时间:2018-04-05 00:00:23

标签: mysql database

我对我正在为大学访客讲座工作的数据库提出疑问。目前我所拥有的是:

    lectures_available
    +----------------+---------+-----------+-----------+
    |availableSlotID |roomID   |availableDate|availableTime|
    +----------------+---------+-----------+-----------+
    |              1 |       1 | Monday    | 09:00:00  |
    |              2 |       1 | Tuesday   | 07:00:00  |
    |              3 |       1 | Tuesday   | 12:00:00  |
    |              4 |       2 | Wednesday | 11:00:00  |
    |              5 |       2 | Wednesday | 12:00:00  |
    |              6 |       2 | Thursday  | 10:00:00  |
    |              7 |       3 | Tuesday   | 14:00:00  |
    |              8 |       3 | Friday    | 09:00:00  |
    +----------------+---------+-----------+-----------+


    guest_lectures
    +---------+-----------------------+----------+
    | roomID  | lecture               | capacity |
    +---------+-----------------------+----------+
    |       1 | Engineering           |        3 |
    |       2 | Social Science        |        3 |
    |       3 | Archaeology           |        2 |
    |       4 | Biochemistry          |        0 |
    +---------+-----------------------+----------+

我想知道的是,是否可以将roomID从lectures_available链接到guest_lectures中的容量?

例如,现在我有1个房间1(工程讲堂)的3个可用日期,其容量为3.但是在这3个预订之后,容量应该变为2.

一点帮助将不胜感激! :) 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用capacity更新JOIN列。

UPDATE guest_lectures AS l
LEFT JOIN lectures_available AS a ON l.room_id = a.room_id
SET l.capacity = IFNULL(COUNT(a.roomID), 0)

答案 1 :(得分:0)

我认为容量不应该是guest_lectures中的列,您应该动态生成它:

SELECT lecture, COUNT(l.roomID) AS capacity
FROM guest_lectures g
LEFT JOIN lectures_available l ON g.roomID = l.roomID
GROUP BY g.roomID

SQLFiddle