|
|
|
| ХРИСТОС ВОСКРЕС!
Написал запрос:
SELECT referreid AS usrname, SUM( points ) AS points
FROM #__alpha_userpoints_details
WHERE points >0
GROUP BY referreid
ORDER BY SUM( points ) DESC
;
В данном запросе usrname берется из столбца referreid таблицы #__alpha_userpoints_details, что не очень удобно. Как сделать чтоб referreid преобразовалось в username из таблицы #__users, если есть еще таблица #__alpha_userpoints, в которой есть столбцы userid и referreid, в котором значения такие же как и в аналогичном в таблице #__alpha_userpoints_details, но количество строк разное? Спасибо! | |
|
|
|
|
|
|
|
для: oc01
(24.04.2011 в 11:07)
| | Можно воспользоваться многотабличным запросом, но пока не очень понятно, как связаны таблицы #__alpha_userpoints_details, #__users и #__alpha_userpoints? В каждой из них есть столбец userid? Какую роль играет столбец referreid и в каких таблицах он имеется? В таблице #__users есть поле username и его нужно поместить в список полей SELECT? | |
|
|
|
|
|
|
|
для: cheops
(24.04.2011 в 11:31)
| | В таблице #__users есть столбцы userid и username.
В таблице #__alpha_userpoints есть столбцы userid и referreid.
В таблице #__alpha_userpoints_details есть столбцы points и referreid.
Надо присвоить username (имени) points (поинты) | |
|
|
|
|
|
|
|
для: oc01
(24.04.2011 в 11:40)
| | Я думаю здесь можно задействовать только первую и третью таблицы | |
|
|
|
|
|
|
|
для: oc01
(24.04.2011 в 11:40)
| | Попробуйте следующий запрос
SELECT
u.usrname AS usrname,
SUM( a.points ) AS points
FROM
#__alpha_userpoints_details AS a
LEFT JOIN
#__users AS u
ON a.referreid = u.userid
WHERE a.points >0
GROUP BY a.referreid
ORDER BY SUM( a.points ) DESC
|
| |
|
|
|
|
|
|
|
для: cheops
(24.04.2011 в 11:58)
| | Вот так лучше
SELECT
u.username AS usrname,
SUM( a.points ) AS points
FROM
josptc_alpha_userpoints_details AS a
LEFT JOIN
josptc_users AS u
ON a.referreid = u.userid
WHERE a.points >0
GROUP BY a.referreid
ORDER BY SUM( a.points ) DESC
;
|
u.usrname заменил на u.username
но при этом #1054 - Unknown column 'u.userid' in 'on clause' т.к. в таблице josptc_alpha_userpoints_details нет столбца userid | |
|
|
|
|
|
|
|
для: oc01
(24.04.2011 в 12:06)
| | u.userid относится к таблице josptc_users, в ней есть такой столбец? | |
|
|
|
|
|
|
|
для: cheops
(24.04.2011 в 12:30)
| | Прошу прощения, там столбец id. Исправил запрос
SELECT
u.username AS usrname,
SUM( a.points ) AS points
FROM
josptc_alpha_userpoints_details AS a
LEFT JOIN
josptc_users AS u
ON a.referreid = u.id
WHERE a.points >0
GROUP BY a.referreid
ORDER BY SUM( a.points ) DESC
;
|
При таком расскладе в столбце usrname во всех строках NULL. Поинты посчитаны правильно | |
|
|
|
|
|
|
|
для: oc01
(24.04.2011 в 12:43)
| | Вот так работает, спасибо!!!
SELECT
u.username AS usrname,
SUM( a.points ) AS points
FROM
josptc_alpha_userpoints_details AS a
LEFT JOIN
josptc_alpha_userpoints AS b
ON a.referreid = b.referreid
LEFT JOIN
josptc_users AS u
ON b.userid = u.id
WHERE a.points >0
GROUP BY a.referreid
ORDER BY SUM( a.points ) DESC
;
|
| |
|
|
|