Задать вопрос
bootd
@bootd
Гугли и ты откроешь врата знаний!

Как можно оптимизировать запрос?

Задача состоит в следующем:
Получить типы и названия изделий, для изготовления которых используются самые дорогие по стоимости детали;

Есть 3 таблицы:
items [`id`, `view`, `name`, `description`] - Хранит изделия
details [`id`, `name`, `price`, `unit_detail`] - Хранит детали, из которых делают изделия
details_in_items [`id_item`, `id_detail`, `count`] - Хранит детали, используемые в изделии

[`id_item`,`id_detail`] в таблице details_in_items связаны основным ключём

Мой запрос такой:
SELECT view,name 
FROM `items` WHERE id IN (SELECT id_item FROM  details_in_items WHERE id_detail IN (SELECT id FROM `details` WHERE price=(SELECT MAX(price) FROM details)))
  • Вопрос задан
  • 150 просмотров
Подписаться 2 Оценить 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Shwed_Berlin
@Shwed_Berlin
.net Software Developer
SELECT item.view, item.name, item.description
FROM items AS item
INNER JOIN details_in_items AS cross ON item.id = cross.id_item 
            AND cross.id_detail in (SELECT TOP 5 id FROM details ORDER BY price DESC)

выберет все изделия в которых используются 5 (TOP 5) самых дорогих деталей
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы