Где ошибка в этом запросе? (sql-ex.ru упражнение 25)

0

Я пытаюсь решить упражнение 25 из sql-ex.ru:

Схема базы данных состоит из четырех таблиц:

  • Продукт (производитель, модель, тип)
  • ПК (код, модель, скорость, ram, hd, cd, цена)
  • Ноутбук (код, модель, скорость, ram, hd, экран, цена)
  • Принтер (код, модель, цвет, тип, цена)

Найдите производителей принтеров, которые также выпускают ПК с наименьшей емкостью оперативной памяти и максимальной скоростью процессора на всех ПК, имеющих самую низкую емкость ОЗУ. Набор результатов: создатель.

Я не понимаю, почему следующий запрос не дает желаемого результата во второй контрольной базе данных:

SELECT DISTINCT product.maker
FROM product
RIGHT JOIN printer ON printer.model = product.model
WHERE product.maker IN(
    SELECT product.maker
    FROM product
    RIGHT JOIN pc ON pc.model = product.model
    WHERE pc.ram = (SELECT MIN(ram) FROM pc)
    AND pc.speed = (
        SELECT MAX(t.speed)
        FROM (SELECT speed FROM pc WHERE ram = (SELECT MIN(ram) FROM pc)) AS t
    )
)

Ошибка заключается в следующем:

Wrong
Your query produced correct result set on main database, but it failed test on second, checking database
* Wrong number of records (less by 1)

Почему он не может выбрать ровно 1 производителя?

  • 0
    что происходит, когда вы меняете ПРАВО СОЕДИНЕНИЯ на ВНУТРЕННЕЕ СОЕДИНЕНИЕ
  • 0
    @ErayBalkanli Попробовал и получил ту же ошибку, что и ожидалось, поскольку таблица продуктов содержит все модели из таблицы ПК, поэтому соединения INNER и RIGHT эквивалентны.
Теги:

1 ответ

0

Я не знаю, где ошибка в вашем запросе, но вы можете использовать что-то вроде этого:



WITH t AS ( SELECT * FROM PC c WHERE c.ram = (SELECT MIN(ram) FROM PC) ) SELECT DISTINCT a.maker FROM Product a WHERE a.type = 'PC' AND a.maker IN ( SELECT b.maker FROM Product b WHERE b.type = 'Printer' ) AND a.model IN ( SELECT model FROM t WHERE speed = (SELECT MAX(speed) FROM t) )

  • 1
    Прочитайте вопрос !!!! Это MySQL !!! Нет CTE.
  • 0
    @Eric О чем ты говоришь?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню