Выбор вложенных общих атрибутов - PullRequest
0 голосов
/ 24 апреля 2011

Я использую следующую инструкцию, чтобы запросить мою базу данных и вернуть наиболее распространенный цвет, стиль элемента a. Получив эти данные, я бы хотел выбрать наиболее распространенный размер.

select color, style, size
from orders
where item = 'item a'
group by color, style
order by count(*) desc
limit 1

Если я сгруппирую по цвету, стилю, размеру, он не будет правильно подсчитывать количество цветов и стилей. Как я могу получить эту последнюю информацию из БД?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2011

Если честно, трудно понять, как один запрос будет эффективнее трех.Но если вам нужно, вы можете объединить их в один запрос с помощью union:

select  'Common Color' as Id
,       (select color from orders where item = 'item a' group by color 
           order by count(*) desc limit 1) as Value
union all
select  'Common Style'
,       (select style from orders where item = 'item a' group by style 
            order by count(*) desc limit 1)
union all
select  'Common Size'
,       (select size from orders where item = 'item a' group by size 
            order by count(*) desc limit 1)

. Подзапросы предназначены для устранения любой неопределенности относительно того, применяется ли limit ко всему объединению или простоодна часть.

0 голосов
/ 24 апреля 2011

Используйте второй запрос, чтобы получить наиболее распространенный размер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...