2010-09-01 1 views
0

У меня есть таблица S, содержащая поставщиков (S, SNAME, CITY), таблица P, содержащая продукты (P, PNAME, ЦВЕТ, ВЕС, ЦЕНА) и таблицу SP, содержащие поставки (S, P, QTY), где S и P внешние ключи к таблице S и P.Показать имена поставщиков, которые доставили самую большую поставку (вложенный запрос)?

То, что я просил сделать это

«Показать имя поставщика (ов), которые доставляли большой доставки (в виде вложенного запроса). "

Как я могу это сделать?

EDIT: Удалено кусок кода, который, как я утверждал, работает нормально. Не было.

+0

Это домашнее задание? Какую базу данных вы используете? Как работает ваш текущий запрос, если вы присоединяетесь к каждому 'S' с каждым' SP', не проверяя свой столбец внешнего ключа '' '? –

ответ

0
select s.sname, sum(sp.qty) 
    from s, 
     sp, 
     (select max(qty) val 
      from (select sum(sp.qty) qty 
        from s, sp, p 
       where sp.p = p.p 
        and sp.s = s.s 
       group y s.sname)) max_q 
where sp.s = s.s 
group by s.sname 
having sum(sp.qty) = max_q.val 
0

Я нашел решение. Слишком очевидно, я думаю. Мне не удалось выяснить, какой внутренний запрос использовать.

SELECT SNAME FROM S, SP WHERE S.S = SP.S AND QTY = (SELECT MAX(QTY) FROM SP) 
+0

Нет. Вы выбираете максимальную сумму доставки для одного продукта, но вы должны учитывать, что ваш поставщик может поставлять несколько продуктов, и в этом случае вам необходимо суммировать суммы доставки. –

+0

Строки в SP - все единичные поставки, я полагаю, что они задавали вопрос о самой большой единичной доставке. Если нет, вы правы :) – Challe

Смежные вопросы