Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
LittleLady Member Откуда: Сообщений: 12 |
Дана таблица учеников: Create table P ( p_id int not null, -id ученика s_id int not null, -id предмета p_m int null - оценка ); Insert into P('p_id', 's_id', 'p_m') Values ('1','1','2') Insert into P('p_id', 's_id', 'p_m') Values ('1','2','3') Insert into P('p_id', 's_id', 'p_m') Values ('2','1','3') Insert into P('p_id', 's_id', 'p_m') Values ('2','2','3') Insert into P('p_id', 's_id', 'p_m') Values ('3','1','4') Insert into P('p_id', 's_id', 'p_m') Values ('3','2','5') Необходимо вывести учеников, у которых оценка по каждому из предметов больше 3. Собственно проблема именно сформулировать запрос так, чтобы выбирало только тех учеников, у которых по каждому из заданных предметов оценка больше 3 баллов... |
20 май 19, 15:38 [21888996] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
"оценка по каждому из предметов больше 3" = "отсутствуют оценки меньше или равно 3 хотя бы по одному предмету" |
20 май 19, 15:40 [21888997] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Гавриленко Сергей Алексеевич, Я понимаю. У меня проблема на sql это усечение прописать. |
20 май 19, 15:51 [21889000] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||
20 май 19, 16:15 [21889008] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
iap, Спасибо за подсказку про not exist, правда я додумала только до такого: NOT EXIST(p_m>3) Как усечь так, чтобы оно выводило только тех учеников,у которых по всем предметом оценки выше 3, по-прежнему, не знаю :( |
20 май 19, 16:31 [21889018] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
LittleLady, точнее NOT EXIST(p_m<3) |
20 май 19, 16:36 [21889021] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
для начала представьте, как бы вы отобрали строки, которые не соответствуют вашей задаче. у вас должен получиться запрос вот его и поместите в not exists, предварительно связав ученика из основного запроса с учеником в подзапросе. |
||
20 май 19, 16:40 [21889026] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
20 май 19, 16:43 [21889029] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Посетитель, Select p_id, From P Where NOT EXIST(Select * From P Where p_m<3) Так? |
20 май 19, 17:03 [21889043] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
этот не сдаст... |
||
20 май 19, 17:06 [21889045] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Гавриленко Сергей Алексеевич, А кто Вам сказал, что это по учёбе и с чего Вы взяли, что мне так глубоко давали sql в университете? |
20 май 19, 17:07 [21889046] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
TaPaK, Помогите.Пожалуйста.С формулировкой. Запроса. |
20 май 19, 17:07 [21889047] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
и не забудьте про
|
||||
20 май 19, 17:10 [21889050] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
ну может на троечку натянем? ![]() |
||||
20 май 19, 17:11 [21889051] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Посетитель, Select p_id, From P Where NOT EXIST(Select * From P Where p_m<=3 AND p_id=p_id) Догадываюсь, что p_id=p_id неправильно, но как правильно-не знаю...Перечитала доки майкрософта, но там такого толком нету, либо я не понимаю как должна выглядеть связка.... :( |
20 май 19, 17:19 [21889056] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
alias используйте |
20 май 19, 17:25 [21889064] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
К сообщению приложен файл. Размер - 27Kb |
||
20 май 19, 17:30 [21889072] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Konst_One, Select p_id AS pup_id From P Where NOT EXIST(Select pup_id From P Where p_m<=3) Так? |
20 май 19, 17:36 [21889077] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
вам даже красмным пометили выше, чтобы вы поняли |
20 май 19, 17:50 [21889089] Ответить | Цитировать Сообщить модератору |
LittleLady Member Откуда: Сообщений: 12 |
Konst_One, Там в запросе 2 таблицы, а не одна. |
20 май 19, 17:57 [21889092] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
20 май 19, 17:59 [21889095] Ответить | Цитировать Сообщить модератору |
smj Member Откуда: Сообщений: 3 |
Exists не нужен.select p_id from p group by p_id having min(p_m)>3 |
20 май 19, 23:01 [21889263] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Это ответ на вопрос "Все ученики, у которых есть оценки больше 3" |
21 май 19, 07:48 [21889360] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Надо как минимум сначала узнать количество предметов. |
21 май 19, 07:49 [21889361] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Что касается предметов, то вы считаете, что есть такие, по которым оценок нет вообще? Такого к концу учебного периоде не бывает. Хотя, в общем случае вы правы. |
||
21 май 19, 09:26 [21889416] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |