Азы SQL. Имеется сайт, на котором пользователи пишут статьи и могут их комментировать. Все данные сайта хранятся в базе данных. Структура базы данных:

Таблица users – пользователь сайта:
id – уникальный идентификатор записи
name – имя пользователя
age – возраст пользователя
admin – true = администратор сайта, false = обычный пользователь

Таблица article – статьи:
id - уникальный идентификатор записи
user_id – идентификатор пользователя из таблицы users, написавшего статью
annotation – аннотация к статье
text – полный текст статьи

Таблица comments – комментарии к статье:
id - уникальный идентификатор записи
user_id - идентификатор пользователя из таблицы users, написавшего комментарий
text – текст комментария
is_deleted – true = комментарий помечен как удаленный, false = комментарий не помечен

Таблица article_comment_association – привязка комментариев к статьям:
article_id – уникальный идентификатор статьи из таблицы articles
сomment_id – уникальный идентификатор комментария из таблицы comments

Создайте запросы, возвращающие следующие данные:
1. Все идентификаторы статей, в тексте которых есть слово “beta” или цифра 4
2. Все идентификаторы статей, которые не содержат комментариев
3. Все имена пользователей, у которых есть статьи с комментариями
4. Список идентификаторов статей и количество комментариев к этим статьям

1

Ответы и объяснения

Лучший Ответ!
  • Pauel
  • профессор
2014-01-20T11:06:16+00:00
Не указано, какая используется СУБД, ниже запросы подойдут для Postgresql:
1. select article.id from article  where article.text like '%beta%' or '%4%'
2. select article.id  from article where comments.text is NULL and article_comment_association.article_id=article.id and article_comment_association.сomment_id=comments.id
3. select 
users.name from users where users.id=article.user_id and article_comment_association.article_id=article.id and article_comment_association.сomment_id=comments.id
4. SELECT article.id, COUNT(comments.id) AS "CNT" from  article, comments
where article_comment_association.article_id=article.id and article_comment_association.сomment_id=comments.id