имею 2-ве таблицы:
users:
id score
1 4
2 6
3 11
4 21
levels:
lvl value
1 0
2 5
3 10
4 20
Как рациональнее получить 1 массив вида (LEFT JOIN не пойму как реально применить для диапазона)
(в SQL особо не силён)
Форум → Программирование → PHP для идиотов → Выборка пользователя + уровень
Страницы: ← Следующая страница →
31 октября 2010 г. 6:01, спустя 21 минуту 17 секунд
31 октября 2010 г. 6:18, спустя 16 минут 32 секунды
id score lvl
1 4 1
2 6 2
3 11 3
4 21 4
5 3 1
6 12 3
n
31 октября 2010 г. 6:42, спустя 24 минуты 1 секунду
31 октября 2010 г. 11:11, спустя 4 часа 28 минут 39 секунд
31 октября 2010 г. 11:54, спустя 8 минут 25 секунд
31 октября 2010 г. 11:58, спустя 4 минуты 13 секунд
31 октября 2010 г. 12:09, спустя 11 минут 14 секунд
SELECT DISTINCT u.id as id, u.score as score, l.1v1 as 1v1
FROM
users u INNER JOIN levels l
WHERE
u.score >= l.value AND
u.score <= (IF(l.value = 0, 5, l.value) * 2)
GROUP BY u.id, u.score
31 октября 2010 г. 12:13, спустя 4 минуты 26 секунд
31 октября 2010 г. 12:19, спустя 5 минут 22 секунды
SELECT u.id as id, u.score as score, l1.1v1 as 1v1
FROM
users u INNER JOIN levels l1
WHERE
u.score >= l1.value AND u.score <= (SELECT l2.value FROM levels l2 WHERE l1.value < l2.value ORDER BY l2.value LIMIT 1)
GROUP BY u.id, u.score
31 октября 2010 г. 12:21, спустя 2 минуты 39 секунд
31 октября 2010 г. 12:26, спустя 4 минуты 23 секунды
SELECT u.id as id, u.score as score, l1.1v1 as 1v1
FROM
users u INNER JOIN levels l1
WHERE
u.score >= l1.value AND u.score <= IFNULL((SELECT l2.value FROM levels l2 WHERE l1.value < l2.value ORDER BY l2.value LIMIT 1), l1.value + 10)
GROUP BY u.id, u.score
Профи обосрались? ))))
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!