![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 20.12.2010
Сообщений: 2
|
![]()
Помогите пожалуйста написать запросы к БД. Но есть условие они должны быть без подзапросов.
Структура Student -id_stud -id_grup -surname -name -stipend -birthday Ozenka -id_stud -id_disp -ocenka Disziplina -id_disp -name Grupp -id_grup -id_stud -name
Из двух таблиц:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
1.
SELECT `surname`, `name`, `stipend` FROM `Student` ORDER BY `surname`, `name`; 2. Для группы с именем Gruppa1: SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa1"; Для группы с именем Gruppa2: SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa2"; Для группы с именем Gruppa3: SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa3"; или тоже самое, если хотите обратиться к тем же группам не по имени, а по их id: SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`id_grup` = 1; SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`id_grup` = 2; SELECT SUM(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`id_grup` = 3; 3. SELECT AVG(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa1"; SELECT AVG(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa2"; SELECT AVG(`stipend`) FROM `Student` INNER JOIN `Grupp` USING(`id_stud`,`id_grup`) WHERE `Grupp`.`name` = "Gruppa3"; 4. SELECT MIN(`stipend`) FROM `Student`; 5. SELECT AVG(`Stipend`)-MIN(`Stipend`) FROM `Student`; 6. SELECT COUNT(*) FROM `Student` INNER JOIN `Grupp` USING(`id_grup`,`id_stud`) WHERE `Grupp`.`name` = "Gruppa1"; SELECT COUNT(*) FROM `Student` INNER JOIN `Grupp` USING(`id_grup`,`id_stud`) WHERE `Grupp`.`name` = "Gruppa2"; SELECT COUNT(*) FROM `Student` INNER JOIN `Grupp` USING(`id_grup`,`id_stud`) WHERE `Grupp`.`name` = "Gruppa3"; 7. SELECT `Grupp`.`name` FROM `Grupp` INNER JOIN `Student` USING(`id_grup`,`id_stud`) GROUP BY `id_grup` HAVING COUNT(*)>15; Из двух таблиц: 1. SELECT `surname`, `name` FROM `Student` INNER JOIN `Ozenka` USING(`id_stud`) GROUP BY `id_stud` HAVING AVG(`ocenka`) = 4.5; 2. SELECT `surname`, `name`, SUM(`ocenka`) FROM `Student` INNER JOIN `Ozenka` USING(`id_stud`) GROUP BY `id_stud`; 3. SELECT AVG(`ocenka`) FROM `Ozenka` INNER JOIN `Grupp` USING(`id_stud`) WHERE `name` = "Gruppa1"; SELECT AVG(`ocenka`) FROM `Ozenka` INNER JOIN `Grupp` USING(`id_stud`) WHERE `name` = "Gruppa2"; SELECT AVG(`ocenka`) FROM `Ozenka` INNER JOIN `Grupp` USING(`id_stud`) WHERE `name` = "Gruppa3"; Или одним запросом: SELECT AVG(`ocenka`) FROM `Ozenka` INNER JOIN `Grupp` USING(`id_stud`) GROUP BY `id_grup`;
No name. Just Linel.
Последний раз редактировалось Linel; 27.06.2012 в 12:48. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
P.S. Сам сейчас изучаю MySQL, поэтому твои задачки оказались очень кстати, чтобы голову размять
![]() Все работает, сам проверял. Единственное, что хотел спросить. Скажи, ты базу данных сам проектировал? Потому что если такая база была уже дана (взята за основу) и спроектированна она правильно, то это сломает мне мозг, т.к. исходя из уже мною изученного, такая структура мягко говоря не идеальна.
No name. Just Linel.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
1. Между Student и Disziplina реализовано отношение многие-к многим посредством таблицы Ozenka. При этом у студента по дисциплине может быть только одна оценка. Если больше, то в таблице Ozenka запросто могут появиться полностью совпадающие записи
2. В таблице Grupp поле id_stud явно лишнее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 | ||
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
Аватар, спасибо, что отписАлись.
Цитата:
Цитата:
No name. Just Linel.
|
||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Там похоже и так первичный ключ составной из id_stud и id_disp. Эти же поля и внешние ключи. Т.е. оценка только одна. Если держать несколько, то сделать отдельный первичный ключ, id_stud и id_disp только внешние ключи, возможно добавить дату оценки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 20.12.2010
Сообщений: 2
|
![]()
я извиняюсь, а нельзя ли прислать скриншоты этих запросов....Буду очень благодарна
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 08.11.2009
Сообщений: 225
|
![]()
человеку, походу, отчет на лабу надо сделать, а вы обсуждаете структуру бд
![]() |
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]() Цитата:
No name. Just Linel.
|
|
![]() |
![]() |
![]() |
#10 | ||
Новичок
Джуниор
Регистрация: 11.12.2019
Сообщений: 1
|
![]() Цитата:
Цитата:
![]() |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запросы в БД | Valecus | Microsoft Office Access | 6 | 11.11.2010 21:55 |
С++. Запросы в БД | morindos | Помощь студентам | 1 | 24.06.2010 11:42 |
Запросы | ара | Помощь студентам | 20 | 13.05.2010 11:54 |
Запросы | Kristina92 | Microsoft Office Access | 2 | 25.03.2010 21:27 |
Запросы | Katushka_88_88 | Microsoft Office Access | 3 | 25.01.2010 20:04 |