Обсуждение:SQL-запросы к экзамену по СПАСОИ (10 семестр)

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску

По билетам

Билет №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. что будет выдавать код - приведено для каждого запроса в блоке Результат. Все запросы проверялись на реальной БД;
  2. в 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)