Xpoint
   [напомнить пароль]

Выборка и сортировка

Метки: [без меток]
2006-05-11 15:50:34 [обр] Георгий Жалинский aka ali[досье]

Помогите пожалуйста.

Есть две таблицы:
tab1
id int(11) Pri key
a int(3)
b int(3)
c int(3)
d int(3)

hash
key int(11) Pri key
val varchar(100)

поля a,b,c,d содержат числа соответствующие значениям поля key из таблицы hash.
Необходимо определить какие ключи (keys) из hash есть в таблице tab1 и сколько раз они упоминаются в каждой колонке. Затем выбрать 10 наиболее часто используемых (по сумме a+b+c+d);
Запрос на выборку имеет следующий вид:

SELECT val,count(distinct a),count(distinct b),count(distinct c),count(distinct d),
count(distinct a)+count(distinct b)+count(distinct c)+count(distinct d) as summa
from tab1
left join hash as h on (h.key=a or h.key=b or h.key=c or h.key=d)
group by val
order by summa desc,val asc

Вывод должен быть отсортирован по полю summa для определения 10 наиболее часто используемых значений val, а затем отсортирован по val.
(Вариант ORDER by summa,val не дает должного результата)
Можно ли одним запросом решить поставленную задачу, или необходимо создавать временные таблицы?

Powered by POEM™ Engine Copyright © 2002-2005