Форум: "Прочее";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
Внизsql-запрос Найти похожие ветки
← →
LDV (2011-01-11 21:36) [0]Есть 2 таблицы:
товары (id, name, type)
заказы (id, prod_id)
задача: вывести тип товара, который чаще всего заказывают (товары.type)
СУБД MS SQL
Пытаюсь сделать через вложенный запрос, но ничего не выходит (нужно учесть что несколько товаров могут иметь одинаковое максимально значение)
SELECT type FROM товары WHERE id = (SELECT TOP 1 prod_id FROM заказы GROUP BY prod_id ORDER BY COUNT(prod_id) ASC)
← →
antonn © (2011-01-11 23:00) [1]
SELECT tw.*,COUNT(zk.prod_id) AS towar_count FROM `zakaz` zk
LEFT JOIN `towar` tw ON tw.id=zk.prod_id
GROUP BY zk.prod_id ORDER BY towar_count DESC LIMIT 0,1
навскидку, мускл. хз насколько оптимально
← →
tesseract © (2011-01-11 23:43) [2]Без количества заказанного, всё равно ничего путного не выйдет. Можно через второй вложенный добавив его как 1 и поверх вычесть сумму - но это уже кривошипный механизм.
← →
LDV (2011-01-12 00:14) [3]сделал так:
SELECT type FROM товары WHERE id = (SELECT TOP (1) WITH TIES prod_id FROM заказы GROUP BY prod_id ORDER BY COUNT(prod_id) DESC)
← →
Ega23 © (2011-01-12 00:32) [4]
> antonn © (11.01.11 23:00) [1]
Он же MSSQL внятно указал, там LIMIT вроде как нету.
> Без количества заказанного, всё равно ничего путного не
> выйдет.
Так ведь MAX же нужен.
А, понял, ты имел ввиду количество единиц в одном заказе?
← →
turbouser © (2011-01-12 01:08) [5]
> tesseract © (11.01.11 23:43) [2]
>
> Без количества заказанного, всё равно ничего путного не
> выйдет
select top(1) t.type, count(z.id) from zakaz z inner join tovar t on t.id=z.prod_id
group by t.type
order by 2 desc --по индексу вроде должно проканать.
← →
DiamondShark © (2011-01-12 01:16) [6]select top 1 товары.type
from товары
inner join заказы on товары.id=заказы.prod_id
group by type
order by COUNT(заказы.id) DESC
← →
antonn © (2011-01-12 01:19) [7]
> Он же MSSQL внятно указал, там LIMIT вроде как нету.
нету, но не критично
> А, понял, ты имел ввиду количество единиц в одном заказе?
я так понял что тот товар что чаще всего в заказах бывает
← →
tesseract © (2011-01-12 10:34) [8]
> А, понял, ты имел ввиду количество единиц в одном заказе?
Да - я имел в виду всё равно придется структуру переделывать :-)
← →
Anatoly Podgoretsky © (2011-01-12 12:22) [9]
> LDV (12.01.11 00:14) [3]
> SELECT type FROM товары WHERE id = (SELECT TOP (1) WITH
> TIES prod_id FROM заказы GROUP BY prod_id ORDER BY COUNT(prod_id)
> DESC)
Что за СУБД такая экзотическая, что позволяет не указывать в
GROUP BY список возвращаемых полей. И как тогда интерпретировать результат с произвольными type - разве если после литра только.
Такую СУБД на помойку
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.04.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c