Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите, пожалуйста, написать запрос  [new]
Ольга Корн
Member

Откуда: Ростов-на-Дону
Сообщений: 33
Есть две таблицы, вот их структуры.
Classes (class - класс устройства,
num - количество элементов,
type - тип устройства)
Elem (name - название устройства,
class - класс устройства)
Необходимо найти названия устройств, имеющих наибольшее число элементов, среди всех имеющихся устройств, того же type.
2 ноя 09, 09:58    [7869190]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ольга Корн,

работу предлагаете?
А условия какие?
2 ноя 09, 10:08    [7869230]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Supra93
Member

Откуда:
Сообщений: 8174
Ольга Корн

Необходимо найти названия устройств,

SELECT
Ольга Корн
имеющих наибольшее

MAX
Ольга Корн

число элементов,

COUNT
Ольга Корн

среди всех имеющихся устройств,

FROM
Ольга Корн
того же type.

GROUP BY
2 ноя 09, 10:13    [7869247]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Ольга Корн
Member

Откуда: Ростов-на-Дону
Сообщений: 33
Supra93,
а можно подробнее, я что-то в таком духе писала, но оно не работает!
2 ноя 09, 10:16    [7869263]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31161
Ольга Корн
Supra93,
а можно подробнее, я что-то в таком духе писала, но оно не работает!
Так приведите свой вариант.
2 ноя 09, 10:21    [7869279]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Supra93
Member

Откуда:
Сообщений: 8174
Ольга Корн
Supra93,
а можно подробнее

нажмите F1, там все подробности
2 ноя 09, 10:28    [7869305]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Ольга Корн
Member

Откуда: Ростов-на-Дону
Сообщений: 33
alexeyvg, select max(num), name, type
form classes inner join elem
on elem.class=classes.class
group by type
2 ноя 09, 10:29    [7869313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
aleks2
Guest
Ёпрст!

select *
FROM Classes T
WHERE T.num=(select max(num) FROM Classes X WHERE X.type=T.type)

ну имя то вы в состоянии, наверное, сами присобачить...
2 ноя 09, 10:34    [7869341]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Ольга Корн
Member

Откуда: Ростов-на-Дону
Сообщений: 33
aleks2,
написанный Вами запрос работать будет неверно в ряде случаев.
А именно,
1) есть класс без устройтсв в базе данных;
2) для этого класса число элементов максимально среди классов с таким же типом.
3) этот максимум не достигается для устройств других классов
2 ноя 09, 10:56    [7869464]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
aleks2
Guest
Ольга Корн
aleks2,
написанный Вами запрос работать будет неверно в ряде случаев.
А именно,
1) есть класс без устройтсв в базе данных;
2) для этого класса число элементов максимально среди классов с таким же типом.
3) этот максимум не достигается для устройств других классов


1) Ничем не могу помочь.
2) Ежели вы укажете принцЫп выбора в этой дилемме - можно поправить.
3) Сами поняли, чо сказали?
2 ноя 09, 11:01    [7869495]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, написать запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Ольга Корн
Есть две таблицы, вот их структуры.
Classes (class - класс устройства,
num - количество элементов,
type - тип устройства)
Elem (name - название устройства,
class - класс устройства)
Необходимо найти названия устройств, имеющих наибольшее число элементов, среди всех имеющихся устройств, того же type.

рыба, допиливайте сами
select
        name
    from
        Elem e
        inner join(
                    select top 1 with ties
                            class
                        from
                            Classes
                        order by
                            row_number() over(partition by type order by num desc)
                    )c on c.class=e.class
2 ноя 09, 12:40    [7870325]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить