Как можно получить информацию о статусе, в котором было отправлено каждое сообщение, учитывая, что статусы изменяются отдельно от сообщений в переписке? Требуется объединить данные из двух таблиц, чтобы отобразить статус, связанный с каждым сообщением?
Для выбора значения в зависимости от текущего времени можно использовать следующий SQL запрос:
```sql
SELECT CASE
WHEN CURRENT_TIME < '12:00:00' THEN 'Доброе утро'
WHEN CURRENT_TIME < '18:00:00' THEN 'Добрый день'
ELSE 'Добрый вечер'
END AS Greeting;
```
Для получения информации о статусе, в котором было отправлено каждое сообщение, учитывая, что статусы и сообщения хранятся в разных таблицах, можно воспользоваться SQL запросом с использованием JOIN:
```sql
SELECT messages.message_id, messages.content, statuses.status
FROM messages
JOIN statuses ON messages.status_id = statuses.status_id;
```
В данном запросе мы объединяем таблицу сообщений (messages) с таблицей статусов (statuses) по ключу status_id, чтобы получить статус, связанный с каждым сообщением.
1) У вас во всех таблицах нарушен принцип уникальности записи. Айди, который должен однозначно идентифицировать запись, у вас означает что угодно кроме уникального айди.
2) Так как ваш лог не привязан к сущности сообщения через соответствующее отношение, то выборка будет показывать что угодно, кроме того что вам нужно.
Вывод: идите учите 1, 2 и 3 нормальные формы для начала. Потом нормально создайте таблицы. Потом скорее всего все вопросы сами отпадут, но если нет - вернетесь с нормальным вопросом.