Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Выборка по нескольким записям в одном запросе


Автор: FlightOfDeath 31.3.2011, 16:48
Приветствую всех.
Есть две таблицы, одна называется house, другая podr.
house:
kvm | podr
10   | 1
10   | 1
20   | 2
5     | 2

podr:
id | name
1  | a
2  | b

Нужно написать запрос, который бы выводил имя из таблицы "podr", у которого в сумме "kvm" больше, чем у других.
Запрос сделал, максимальную сумму выводит без проблем, но вот имя он выводит не то, которое нужно, как будто нет связи...
в данном примере должен быть результат "b", но по следующему запросу выводится всегда "a".
Код

SELECT MAX(`result`.`mysum`), `result`.`name`
FROM (
    SELECT SUM(`house`.`kvm`) as `mysum`, `podr`.`name` as `name`
    FROM house, podr
    WHERE `house`.`podr`=`podr`.`id`
    GROUP BY `house`.`podr`
) as `result`

Не знаю в чём ошибка, наверное запрос как то не так составил, подскажите пожалуйста кто в курсе как нужно  сделать.

Автор: bend0r 31.3.2011, 17:19
можно так
Код

SELECT top 1 sum([kvm]),name
FROM [house]
join podr on podr.id=[house].[podr]
group by name
order by sum([kvm]) desc

Автор: Zloxa 31.3.2011, 17:21
Код

   SELECT SUM(`house`.`kvm`) as `mysum`, `podr`.`name` as `name`
    FROM house, podr
    WHERE `house`.`podr`=`podr`.`id`
    GROUP BY `house`.`podr`
order by 1 desc limit 1

Цитата(FlightOfDeath @  31.3.2011,  16:48 Найти цитируемый пост)
Не знаю в чём ошибка

тыщщу раз обсуждалось на форуме и явно описано в масиной документации по group by

Автор: FlightOfDeath 31.3.2011, 18:06
Zloxa, спасибо большое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)