2014-09-20 2 views
0

* Редактировать: Я использую sqlite3ошибка нахождения максимального значения из нескольких таблиц

У меня есть база данных с 3 таблицами; ПК, ноутбук и принтер. У них есть, среди прочих, модель колонок и цена. Я пытаюсь выбрать только модель самой высокой цены из любой из таблиц. Мои попытки привели меня к:

select model 
from 
    (select model, max(price) 
    from 
     (select model, price 
     from laptop 
     union all 
     select model, price 
     from printer 
     union all 
     select model, price 
     from pc)); 

, который дает мне последнюю модель со всех столов. Однако, если я это сделаю:

select model, p 
from 
    (select model, max(price) as p 
    from 
     (select model, price 
     from laptop 
     union all 
     select model, price 
     from printer 
     union all 
     select model, price 
     from pc)); 

Это дает мне правильный результат, но я застрял в цене. Я не понимаю, как это возможно.

+0

Какой базу данных вы используете? (mysql, oracle, sql server и т. д.) –

+0

Используйте 'ORDER BY price DESC LIMIT 1' или' TOP 1 ... ORDER BY price DESC' или что-то еще эквивалентное в вашей РСУБД. – Barmar

+0

@BrianDeMilia Я использую sqlite. –

ответ

0

Это должно делать то, что вы хотите, и возвратит связи, а также:

select x.model 
    from (select model, price 
      from laptop 
     union all 
     select model, price 
      from printer 
     union all 
     select model, price 
      from pc) x 
    join (select max(max_price) as max_price 
      from (select max(price) as max_price 
        from laptop 
       union all 
       select max(price) 
        from printer 
       union all 
       select max(price) 
        from pc)) y 
    on x.price = y.max_price 
Смежные вопросы