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

问题描述 投票:0回答:2

我有一个关于我正在为大学访客讲座工作的数据库的问题。目前我拥有的是:

    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中的容量?

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

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

mysql database
2个回答
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)

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

© www.soinside.com 2019 - 2024. All rights reserved.