Выбор информации из базы данных

 

Для выбора информации из базы данных используется оператор SELECT.

1) Вывести информацию о медикаменте, присутствующем в наибольшем количестве рецептур.

Для выполнения задания необходимо использовать запрос SELECT с подзапросом. Подзапрос должен возвращать список количества медикаментов в каждой рецептуре, а основной запрос будет использовать подзапрос в предложении HAVING для отбора только той группы рецептур, в которой количество медикаментов больше или равно всем значений подзапроса.

Обратимся к таблицам: Medikamenty, Receptures. Условие отбора строк - M.ID=R.Name_ID. Отобранные строки сортируем по M.Name_med. В подзапросе группируем по R.Name_ID. Искомые данные находятся в соответствии с условием, указанным в предложении HAVING.

SELECT M.Name_med, count(M.Name_med)

FROM Medikamenty AS M, Receptures AS R

WHERE M.ID=R.Name_ID

GROUP BY M.Name_med

HAVING count(R.Name_ID)>=all(select count(R.Name_ID)

FROM Receptures AS R Group by R.Name_ID);

2) Вывести информацию о рецептуре, использующей наибольшее количество медикаментов.

Для выполнения задания необходимо использовать запрос SELECT с подзапросом. Подзапрос должен возвращать список препаратов, в которых используется наибольшее количество медикаментов, а основной запрос будет использовать подзапрос в предложении HAVING для отбора только тех медикаментов, количество которых больше или равно всем значений подзапроса.

Обратимся к таблицам: Medikamenty, Receptures, Preparat. Условие отбора строк – (M.ID=R.Name_ID and R.Preparat_ID=P.ID). Отобранные строки сортируем по R.Preparat_ID. В подзапросе группируем по

R.Preparat_ID. Искомые данные находятся в соответствии с условием, указанным в предложении HAVING.

SELECT R.Preparat_ID, count(R.Name_ID)

FROM Receptures AS R, Preparat AS P, Medikamenty AS M

WHERE (R.Preparat_ID=P.ID and R.Name_ID=M.ID)

GROUP BY R.Preparat_ID

HAVING count(R.Name_ID)>=all(SELECT count(R.Name_ID)

FROM Receptures R GROUP BY R.Preparat_ID);

3) Вывести список рецептур, в которых используется конкретный медикамент.

Условие отбора строк указано в предложении WHERE. Оператор DISTINCT исключает одинаковые строки.

SELECT DISTINCT R.Preparat_ID

FROM Receptures AS R, Medikamenty AS M, Preparat AS P

WHERE (P.ID=R.Preparat_ID and M.ID=R.Name_ID and

M.Name_med='Метамизол натрия');

 



ЗАКЛЮЧЕНИЕ

 

В ходе курсовой работы был проведен анализ предметной области в соответствие с заданием и определены используемые сущности и их основные свойства. После анализа связей между сущностями и определения типа этих связей была разработана схема данных для реляционной базы данных. Разработка схемы включала в себя определение необходимых ключей таблиц и ограничений целостности. Построенная схема данных была реализована при помощи SQL в виде операторов создания таблиц базы данных. Для работы с базой данных - добавления, изменения или удаления информации - приведены типовые SQL-операторы для выполнения необходимых действий. В соответствие с заданием составлены операторы SQL для выполнения запросов на извлечение данных, которые выбирают из базы данных и представляют пользователю указанную в задании информацию.

 



СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

 

1 Озкарахан Э. Машины баз данных и управление базами данных. – 1989.

2 Джеймс Р. Грофф, Пол Н. Вайнберью. SQL: полное руководство. – 1998.

3 Диго С.М. Проектирование и использование баз данных. – 1995.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: