|
@@ -52,10 +52,37 @@ INSERT INTO post SET
|
|
|
post_create_datetime = NOW();
|
|
|
```
|
|
|
|
|
|
-поля `post_id` и `post_update_datetime` заполнятся автоматически;
|
|
|
+поля `post_id` и `post_create_datetime` заполнятся автоматически;
|
|
|
|
|
|
#### Задание
|
|
|
|
|
|
Добавьте несколько записей с осмысленными названиями и текстом.
|
|
|
|
|
|
+### Таблица `comment`
|
|
|
|
|
|
+```mysql
|
|
|
+CREATE TABLE `comment` (
|
|
|
+ `comment_id` SERIAL,
|
|
|
+ `post_id` bigint(20) DEFAULT NULL,
|
|
|
+ `comment_parent_id` bigint(20) DEFAULT NULL,
|
|
|
+ `comment_username` varchar(255) DEFAULT NULL,
|
|
|
+ `comment_text` text,
|
|
|
+ `comment_datetime` TIMESTAMP
|
|
|
+);
|
|
|
+```
|
|
|
+
|
|
|
+#### Задание
|
|
|
+1. Добавьте несколько комментариев к вашим постам, установите связь (занесите в `comment.post_id` `post_id` из тех или иных постов). Так же добавьте
|
|
|
+ ответные комментарии к комментариям, т. е. задайте `comment_parent_id`. Оставьте один пост *без* комментариев для понимания различий между
|
|
|
+ `INNER JOIN` и `LEFT JOIN`
|
|
|
+2. Сделайте запросы выборки:
|
|
|
+ - Всех комментов к посту с `post_id` = 2
|
|
|
+ - Запрос, используя `INNER JOIN` или `WHERE` из таблицы постов и комментов, используя `USING(post_id)` или `ON (post.post_id = comment.post_id)`
|
|
|
+ Отметьте для себя отсутствие поста без комментов в выборке.
|
|
|
+ - Запрос, используя `LEFT JOIN`, который выведет все посты, включая тот, у которого нет комментов.
|
|
|
+ - Сделайте запрос, который выбирает посты, их комменты и их подкомментарии, используя `AS` и `comment_parent_id`
|
|
|
+3. Сделайте запросы выборки и группировки:
|
|
|
+ - Выведите все посты и количество комментариев к ним, используя `GROUP BY` и `count(comment.comment_id)`.
|
|
|
+ - Выведите все посты, самый старый и самый свежий комментарий, используя агрегирующие функции `MAX` и `MIN` по полю `comment_datetime`
|
|
|
+
|
|
|
+### Таблица `tag`
|