Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 48
1

Запрос в sql

29.05.2012, 23:51. Показов 1828. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Недавно начал изучать sql, помогите разобраться с запросом...

Есть база данных с таблицами Студенты, Специальности, Оценки и Предметы
Прикрепил сюда диаграмму, чтобы было наглядней...

Нужно вывести список предметов, которые сдавали все студенты.
Получается, код предмета должен присутствовать в одном из экзаменов у каждого студента, но как это реализовать, не понимаю.
Если кто знает, прошу помочь...
Миниатюры
Запрос в sql  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2012, 23:51
Ответы с готовыми решениями:

Запрос Select T-sql - Вложенный запрос вернул больше одного значения
Нужно посчитать комиссию от сделки. DealShare(комиссия) - поле таблицы agents, supplies -...

SQL-запрос в SQL server management studio 2008 (if else)
Здравствуйте! Нужна помощь в правке условия, уже как более 8 часов не могу правильно составить...

SQL запрос на sql server management studio
Доброго времени суток. Имеется две таблицы покупателей man(name,NumberMan) и таблица продажи...

SQL Запрос
Ребята, помогите кто чем сможет, любая помощь будет бесценна.. Руки уже опустила не знаю куда...

6
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
30.05.2012, 09:01 2
Как то так:

SQL
1
2
3
4
5
SELECT [Наименование предмета]
FROM Предметы
WHERE [Код предмета] IN (SELECT [Код предмета 1] FROM Оценки)
OR    [Код предмета] IN (SELECT [Код предмета 2] FROM Оценки)
OR    [Код предмета] IN (SELECT [Код предмета 3] FROM Оценки)

Не по теме:

P.S. Названия на русском schwach, пробелы в названиях еще более schwach. Приучают к плохому коду.

0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
30.05.2012, 10:48 3
Схема данных та еще. А если предметов будет 100?
0
Remmor
30.05.2012, 11:24
  #4

Не по теме:

Цитата Сообщение от pincet Посмотреть сообщение
Схема данных та еще. А если предметов будет 100?
Это по-моему методическое пособие Елисеевой (или как то так), согласен не очень хорошие примеры взяты.

Но у одного студента 100 предметов в одну сессию не будет, а предметов может быть и 100 и 10 000 по вузу.

0
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 48
30.05.2012, 14:01  [ТС] 5
Цитата Сообщение от Remmor Посмотреть сообщение
Как то так:

SQL
1
2
3
4
5
SELECT [Наименование предмета]
FROM Предметы
WHERE [Код предмета] IN (SELECT [Код предмета 1] FROM Оценки)
OR    [Код предмета] IN (SELECT [Код предмета 2] FROM Оценки)
OR    [Код предмета] IN (SELECT [Код предмета 3] FROM Оценки)

Не по теме:

P.S. Названия на русском schwach, пробелы в названиях еще более schwach. Приучают к плохому коду.

при выполнении этого запроса выводится список предметов, которые сдавал кто-то из студентов.. если в таблице Оценки код предмета записан хотя бы один раз в любом из столбцов Код предмета (1,2,3), то предмет будет выведен...
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
30.05.2012, 16:25 6
Solmir,

переведите на ангийский язык фразу

Выбрать все предметы,
для которых не существует студента,
для которого не существует оценок по этим предметам
Это и будет искомый запрос!
1
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
05.06.2012, 09:48 7
Как я понимаю решить задачу можно так:

SQL
1
2
3
4
5
6
7
8
9
10
SELECT [Наименование предмета]
FROM [Предметы]  sub
WHERE NOT EXISTS 
(SELECT * FROM [Студенты] stud
 WHERE NOT EXISTS 
 (SELECT * FROM [Студенты] stud1 INNER JOIN [Оценки] grade ON (stud1.[Код студента]=grade.[Код студента])
  WHERE stud1.[Код студента] = stud.[Код студента] AND 
  (grade.[Код предмета 1] = sub.[Код предмета] OR grade.[Код предмета 2] = sub.[Код предмета] OR grade.[Код предмета 3] = sub.[Код предмета])
 )
)
А если переписать запрос так:
SQL
1
2
3
4
5
6
7
8
9
10
SELECT [Наименование предмета]
FROM [Предметы]  sub
WHERE NOT EXISTS 
(SELECT * FROM [Студенты] stud
 WHERE NOT EXISTS 
 (SELECT * FROM [Оценки] grade 
  WHERE grade.[Код студента] = stud.[Код студента] AND 
  (grade.[Код предмета 1] = sub.[Код предмета] OR grade.[Код предмета 2] = sub.[Код предмета] OR grade.[Код предмета 3] = sub.[Код предмета])
 )
)
Будет ли ошибка? что то я понять не могу(
0
05.06.2012, 09:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2012, 09:48
Помогаю со студенческими работами здесь

Запрос в SQL
Отношение товары содержат поля: код, товар, количество, цена для данного отношения создать таблицу ...

SQL-запрос!!!
Помогите написать SQL-запросы!!! 1. Написать запрос, который вернет последние действующие записи...

sql запрос
Имеется таблица со столбцами Номер_бригады,Специализация,Время_последнего_выезда Нужно из этой...

SQL запрос
Помогите пожалуйста! У меня есть 3 таблицы в БД: 1) Солдат (КодС, Фамилия) 2) Оружие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru