|
|
|
|
|
для: cheops
(06.10.2005 в 13:36)
| | Спасибо огромное! Буду отталкиваться уже от этого.
Скорее всего, придется сделать оба варианта. | |
|
|
|
|
|
|
|
для: DP
(06.10.2005 в 13:11)
| | Нет в один запрос не получится... дело в том, что функция COUNT() относится к классу агрегатных функций - т.е. она регагирует на конструкцию GROUP BY... Если имеете дело с MySQL меньше 4.1.0, то выходом может послужить создание временных таблиц http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=278. Если версия выше можно воспользоваться вложенными запросами.
tbl2:
userID total
1 3
2 3
3 1
|
и
tbl3:
userID total
1 3
2 2
3 2
|
и оперирование уже с ними. | |
|
|
|
|
|
|
| Имеется три таблицы с примерно такой структурой (лишние поля не указаны):
Таблица 1:
userID userName
1 userOne
2 userTwo
3 userThree
Таблица 2:
indexID userID
1 1
2 1
3 3
4 2
5 1
6 2
7 2
Таблица 3:
indexID userID
1 3
2 2
3 2
4 3
5 1
6 1
7 1
|
Нужно составить запрос, который бы выводил отсортированный список userName с результатом кол-ва соответствующих userID в Таблице 2, поделенное на кол-во соотвествующих userID в Таблице 3:
Результат:
name result
userTwo 1.5
userOne 1
userThree 0.5
|
Т.е. примерно такой запрос:
SELECT t1.userName AS name, COUNT(t2.indexID) / COUNT(t3.indexID) AS result
FROM table1 AS t1, table2 AS t2, table3 AS t3
WHERE t2.userID = t1.userID ... t3.userID = t1.userID
GROUP BY name
ORDER BY result DESC
LIMIT 15
|
Никак не получается составить правильное условие через WHERE или JOIN для получения необходимого результата. Помогите, пожалуйста! | |
|
|
|
|