Запросите 4 стола, где у 3 из них есть цена, а производитель присоединяется к ним и получает максимальную цену каждого производителя. - PullRequest
0 голосов
/ 07 января 2020

Как и в заголовке, я хочу сделать запрос, объединяющий 3 разные таблицы с родительской таблицей, каждая из которых имеет производителя и цену и получает максимальную цену за производителя, что я делал до сих пор, что-то вроде этого но я не уверен, что у меня правильный подход:

SELECT maker, model, MAX(price)
FROM (
    SELECT p.Model, maker, COALESCE(print.price, lap.price, pc.price) AS price
    FROM Product p
    LEFT JOIN Printer print ON p.Model = print.Model
    LEFT JOIN Laptop lap ON p.Model = lap.Model
    LEFT JOIN PC pc ON p.Model = pc.Model
    ORDER BY maker DESC
)
GROUP BY maker;

1 Ответ

0 голосов
/ 07 января 2020

это дает большую цену среди 3 за Maker

 SELECT p.Model, maker, 
 case when COALESCE(print.price, 0) > COALESCE(lap.price, 0)
      and COALESCE(print.price, 0) > COALESCE(pc.price, 0) then COALESCE(print.price, 0)
      when COALESCE(lap.price, 0) > COALESCE(print.price, 0)
      and COALESCE(lap.price, 0) > COALESCE(pc.price, 0) then COALESCE(lap.price, 0)
      else COALESCE(pc.price, 0) end as Price
 AS price
    FROM Product p
    LEFT JOIN Printer print ON p.Model = print.Model
    LEFT JOIN Laptop lap ON p.Model = lap.Model
    LEFT JOIN PC pc ON p.Model = pc.Model
    ORDER BY maker DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...