Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.004 c
15-1294176598
Юрий
2011-01-05 00:29
2011.04.24
С днем рождения ! 5 января 2011 среда


15-1294495883
12
2011-01-08 17:11
2011.04.24
Программа, аля система контроля инцидентов


6-1215495439
AHTOLLlKA
2008-07-08 09:37
2011.04.24
Socks5 клиент, как состряпать запрос ?


2-1295442572
12
2011-01-19 16:09
2011.04.24
Почему нет хинта что Result может быть неопределен?


2-1295347887
Mops
2011-01-18 13:51
2011.04.24
Использование интерфейсов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский