«Связывание» подсчета нескольких значений базы данных с одним значением базы данных (mySQL)

0

У меня вопрос о базе данных, над которой я работаю, для лекций в Университете. В настоящее время у меня есть следующее:

    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 с лекциями, доступными для удобства в guest_lectures?

Например, прямо сейчас у меня есть 3 доступных даты для 1-го места (лекционная комната для инженеров), а ее емкость - 3. Но после того, как один из этих 3 получает заказ, емкость должна измениться до 2.

Немного помощи было бы очень полезно! :) Спасибо!

  • 0
    Столбец capacity кажется избыточным. Вы можете рассчитать его, используя соединение между таблицами с COUNT(*) .
Теги:
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
    Просто заметил ваш комментарий к ОП. Извиняюсь за публикацию как ответ. Рад удалить и позволить вам публиковать, если хотите.
  • 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню