Получить список пользователей. Взявших более 1, но менее 3 книг - MySQL
Формулировка задачи:
С использованием SQL создать таблицы для отношения Пользователи (фамилия, код_пользователя), Выданные книги (код_пользователя, дата_выдачи, код_книги). Получить список пользователей. Взявших более 1, но менее 3 книг.
Созданные таблицы:
Пыталась сделать так, но сравнивает не количество, а сам номер
create table polzovat( id int not null auto_increment, familiya char(30), primary key (id)); create table vidanie_knigi( id_knigi int not null auto_increment, id_polz int, data_vidachi date, primary key (id_knigi), foreign key (id_polz) references polzovat(id));
select id_polz, count(id_polz) from vidanie_knigi group by id_polz having id_polz > 1 and id_polz < 3;
Решение задачи: «Получить список пользователей. Взявших более 1, но менее 3 книг»
textual
Листинг программы
SELECT familiya FROM polzovat AS p JOIN vidanie_knigi AS vk ON p.id_polz = vk.id_polz GROUP BY familiya HAVING COUNT(id_knigi) > 1 AND COUNT(id_knigi) < 3;
Объяснение кода листинга программы
В этом коде:
SELECT— это команда для выбора данных из базы данных.familiya— это название переменной, которая будет содержать фамилию пользователя.FROM polzovat— это указание, откуда нужно брать данные. Здесь мы указываем таблицуpolzovat.JOIN vidanie_knigi AS vk ON p.id_polz = vk.id_polz— это оператор объединения (JOIN), который позволяет объединить две таблицы по полюid_polz. В данном случае мы объединяем таблицуpolzovatи таблицуvidanie_knigi. Мы также используем псевдонимvkдля таблицыvidanie_knigi, чтобы не путать её с другими таблицами в запросе.GROUP BY familiya— это указание, что результаты запроса должны быть сгруппированы по значению переменнойfamiliya.HAVING COUNT(id_knigi) > 1 AND COUNT(id_knigi) < 3— это условие, которое применяется к каждой группе результатов. Здесь мы проверяем, что количество книг, взятых пользователем, больше 1 и меньше 3.;— это конец команды. В результате выполнения этого кода будет получен список фамилий пользователей, которые взяли более 1, но менее 3 книг.