|
|
|
Помогите создать запрос к БД. Выборка с двумя параметрами.
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Очень нужна ваша помощь, дорогие форумчане. С SQL так плотно не работал, и задание вызвало кучу вопросов, с первым вроде разобрался. Вот собственно задание: В бд сервера корпоративного антивируса содержится информация об обнаруженных вирусных заражениях, она включает название вируса, время обнаружения, путь до зараженного/вредоносного файла, статус ("вылечен", "удален", "перемещен в карантин"), а также имя ПК, на котором зафиксировано заражение. Введено понятие "вирусной эпидемии". Эпидемией считается ситуация, когда в течение времени T зафиксировано более N заражений определенным вирусом. Требуется: а) описать структуру БД (при условии, что БД находится в 3-НФ); б) написать запрос, выводящий следующие данные об эпидемии: название вируса, количество заражений, статус. С первым вроде все понятно, 4 таблицы, вроде как 3НФ получилось?: 1. computers (id PRIMARY KEY, name) 2. viruses (id PRIMARY KEY, name) 3. statuses (id PRIMARY KEY, name) 4. detections (id, path, date, computer_id FOREIGN KEY computers(id), virus_id FOREIGN KEY viruses(id), status_id FOREIGN KEY status(id) А вот запрос у меня не хватает знаний составить. Помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 14:12 |
|
||
|
Помогите создать запрос к БД. Выборка с двумя параметрами.
|
|||
|---|---|---|---|
|
#18+
Загвоздка одна: как сделать выборку по кол-ву обнаружений определенного вируса > N. Если сделать перебор по всем известным вирусам то тут все понятно, а вот как сделать через базу чтоб она выдала только записи count(detection.virus_id) > N что-то я не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 14:36 |
|
||
|
Помогите создать запрос к БД. Выборка с двумя параметрами.
|
|||
|---|---|---|---|
|
#18+
Используйте HAVING ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 14:42 |
|
||
|
Помогите создать запрос к БД. Выборка с двумя параметрами.
|
|||
|---|---|---|---|
|
#18+
Сгруппировать по вирусам получилось, и указанию кол-ва заражений: SELECT viruses.name, COUNT(detections.id) FROM detections, viruses WHERE detections.virus_id = viruses.id GROUP BY detections.virus_id HAVING COUNT(detections.id) > 2 А вот разбить их еще по статусу пока не сильно получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39114946&tid=1540433]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 169ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...