- 표 사용자 : 사용자 ID, 모자 (ADSL 대역폭)
- 표 회계 : 사용자 ID를 , SESSIONDATE, 사용 대역폭
- 표 애드혹 : 사용자 ID, 날짜, 금액은
내가 모든 사용자가 자신의 모자, 이번 달 자신의 사용 대역폭과 애드혹 구매의 집합을 반환 한 쿼리를 갖고 싶어 구입 이 몽 H : 여기
< TABLE 1 ><TABLE2><TABLE3>
User | Cap | Adhoc | Used
marius | 3 | 1 | 3.34
bob | 1 | 2 | 1.15
(simplified)
내가 작업하고있는 쿼리입니다 :
이SELECT
`msi_adsl`.`id`,
`msi_adsl`.`username`,
`msi_adsl`.`realm`,
`msi_adsl`.`cap_size` AS cap,
SUM(`adsl_adhoc`.`value`) AS adhoc,
SUM(`radacct`.`AcctInputOctets` + `radacct`.`AcctOutputOctets`) AS used
FROM
`msi_adsl`
INNER JOIN
(`radacct`, `adsl_adhoc`)
ON
(CONCAT(`msi_adsl`.`username`,'@',`msi_adsl`.`realm`)
= `radacct`.`UserName` AND `msi_adsl`.`id`=`adsl_adhoc`.`id`)
WHERE
`canceled` = '0000-00-00'
AND
`radacct`.`AcctStartTime`
BETWEEN
'2010-11-01'
AND
'2010-11-31'
AND
`adsl_adhoc`.`time`
BETWEEN
'2010-11-01 00:00:00'
AND
'2010-11-31 00:00:00'
GROUP BY
`radacct`.`UserName`, `adsl_adhoc`.`id` LIMIT 10
쿼리가 작동하지만, 애드혹 및 사용 모두에 대해 잘못된 값을 반환; 내 추측은 내 조인에 논리적 오류가 될 수 있지만 그것을 볼 수 없습니다. 어떤 도움이라도 대단히 감사합니다.
감사를 그런 식으로 더 나은 태그의 ajreal을, 편집) – Marius
을 문제의 테이블 이름과 일치하지 않는 쿼리의 테이블 이름; 영역은 쿼리에는 나타나지만 테이블에는 나타나지 않습니다. –
예 실제 질문과 비교하여 질문을 단순화했습니다. username은 username @ realm의 조합이며 하나의 테이블은 이들을 분리하고 다른 테이블에는 하나의 필드가 있습니다. – Marius