@denislysenko
data engineer

Как написать 3 SQL запроса (чистых, а не проверками в коде)?

Есть две таблицы:
CREATE TABLE `books` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`author_id` INT(11) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`price` FLOAT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_author_id` (`author_id`),
CONSTRAINT `fk_author_id` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)

CREATE TABLE `authors` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
)


Требуется написать 3 SQL запроса (чистых, а не проверками в коде):

1. Вывести все книги и их авторов.
2. Найти авторов, у которых нет ни одной книги.
3. Найти авторов у которых больше одной книги.

Я знаю только базовые вещи SQL. Кто нибудь может на пальцах обьяснить что нужно сделать что бы решить это и какие темы документации нужно изучить для этого?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
select `authors`.`name`, `books`.`title`
  from `books`
  left join `authors` ON `authors`.`id` = `books`.`author_id`


select `authors`.`name`, count(`books`.`id`) as cnt
  from `books`, `authors`
  group by `books`.`author_id`
  having count(`books`.`id`) = 0


select `authors`.`name`, count(`books`.`id`) as cnt
  from `books`, `authors`
  group by `books`.`author_id`
  having count(`books`.`id`) > 1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы