Обсуждение:SQL-запросы к экзамену по СПАСОИ (10 семестр)
Содержание
По билетам
Билет №11
Сначала был такой запрос:
SELECT gorod, sost FROM ( SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo) FROM spasoi_ekz.spj, spasoi_ekz.s WHERE S.nomer_postavshika = SPJ.nomer_postavshika GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) > 1000 ) A;
Но он выполняется не совсем по заданию - там требуется искать тех поставщиков, у которых среди всех их поставок минимальное значение любой из них больше 1000, а тут считается сумма всех поставок поставщика и только потом сравнивается с 1000.
Я убрал его в комментарии и написал новый.
Билеты №№ 1 и 30
Мне кажется, код будет выдавать номер (и имя) поставщика S2. Не уверен, что это не нужно, но, по-моему, это довольно бесполезно.
- не могу сказать, что всё понял из сказанного, но:
- что будет выдавать код - приведено для каждого запроса в блоке Результат. Все запросы проверялись на реальной БД;
- в 1 запросе по заданию нужны номера поставщиков, они и выдаются. В 30 запросе по заданию нужны имена поставщиков, они и выдаются.
- Или что вы имели в виду? iLobster (обсуждение) 23:27, 20 июня 2013 (MSK)
- А, я понял, вы написали свои версии запросов и пишете о них? Смотрите, запрос для билета №30 вы не дописали - имя поставщика брать неоткуда. А запрос №1 у вас возвращает вот что:
nomer_postavshika ------------------- S5 S17 S8 S1 S9 S13 S3 S11 S7 S18 S12 S6 S4 S14 S15 S10 (16 rows)
- Я убрал оба варианта в комментарии. iLobster (обсуждение) 23:36, 20 июня 2013 (MSK)
- А, я ещё раз понял. Этот поставщик уже есть в задании и потому его не надо выводить, вы имеете в виду? Григорьев на лекциях в похожих примерах выводил и его, это и логично. Так что всё огонь iLobster (обсуждение) 23:42, 20 июня 2013 (MSK)
Хипстерство в программировании
Поясните за "хипстерство в программировании": каким образом JOIN ... ON
под него попал? iLobster (обсуждение) 22:26, 20 июня 2013 (MSK)
- а, мсье так шутит iLobster (обсуждение) 22:05, 24 июня 2013 (MSK)
Про JOIN и не JOIN
Ещё раз, на всякий: то, что непримиримый противник JOIN
везде и всюду дописывает варианты, как он называет их, "без JOIN", не делает их таковыми - это тот же самый JOIN
, только CROSS JOIN
- это то же соединение таблиц, только условие соединения прописывается в WHERE
.
И как уже говорилось в статье - CROSS JOIN
не рекомендуется к использованию стандартом. Так что эти правки на "без JOIN" как-то бессмысленны.
Но раз оно так кому-то понятнее, то уж ладно. iLobster (обсуждение) 22:56, 24 июня 2013 (MSK)