만을 사용하여 총계와 사용자 ID 당 클라이언트의 개수 users
테이블 :
SELECT
IFNULL(u.id,'Total') UserID,
COUNT(u.clientid) ClientCount
FROM users u
WHERE u.active = 1
GROUP BY u.id WITH ROLLUP;
clients 테이블이 레코드를 삭제 한 경우 다음을 수행하십시오.
SELECT
IFNULL(u.id,'Total') UserID,
COUNT(c.id) ClientCount
FROM users u INNER JOIN clients c
ON u.clientid = c.id
WHERE u.active = 1
GROUP BY u.id WITH ROLLUP;
들어 users
테이블하지 않아도 active
열을 :
SELECT
IFNULL(u.id,'Total') UserID,
COUNT(u.clientid) ClientCount
FROM users u
GROUP BY u.id WITH ROLLUP;
또는
SELECT
IFNULL(u.id,'Total') UserID,
COUNT(c.id) ClientCount
FROM users u INNER JOIN clients c
ON u.clientid = c.id
GROUP BY u.id WITH ROLLUP;
각 데이터베이스와 UNION ALL
결과 에 대해 이러한 쿼리를 실행해야 합니다.
INFORMATION_SCHEMA 데이터베이스를 활용하려면 다음과 같이 추측하십시오.
SELECT COUNT(1) INTO @hasactive
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'users'
AND column_name = 'active';
SELECT
IFNULL(u.id,'Total') UserID,
COUNT(u.clientid) ClientCount
FROM users u
WHERE IF(@hasactive=1,u.active=1,1)=1
GROUP BY u.id WITH ROLLUP;
시도 해봐 !!!