我有三個表 - 用戶,城市和地區。有趣的選擇mysql
users - u_id, u_city
cities - c_id, r_c_id
regions - r_id, r_alias
凡users
和cities
通過r_c_id = r_id
佔用由u_city = c_id
和cities
和regions
。我有地區表的r_alias。是否有可能計算我選擇的該地區的用戶數(我有r_alias)(COUNT(u_id)
)。
感謝您的幫助!
我有三個表 - 用戶,城市和地區。有趣的選擇mysql
users - u_id, u_city
cities - c_id, r_c_id
regions - r_id, r_alias
凡users
和cities
通過r_c_id = r_id
佔用由u_city = c_id
和cities
和regions
。我有地區表的r_alias。是否有可能計算我選擇的該地區的用戶數(我有r_alias)(COUNT(u_id)
)。
感謝您的幫助!
試試這個:
select count(u_id)
from users
join cities on u_city = c_id
join regions on r_c_id = r_id
where r_alias = "r_alias_value'
是的,這是可能的。
您需要先加入的表,
SELECT a.r_alias, COUNT(*) AS TotalUser
FROM regions a
INNER JOIN cities b
ON a.r_id = b.r_c_id
GROUP BY a.r_alias
這將列出所有區域的用戶的具體數量。如果要計算指定的區域,只需添加WHERE
子句。
SELECT a.r_alias, COUNT(*) AS TotalUser
FROM regions a
INNER JOIN cities b
ON a.r_id = b.r_c_id
WHERE a.r_alias = 'valHERE'
GROUP BY a.r_alias
這將是相當更有效率接近
SELECT STRAIGHT_JOIN
r.*,
COUNT(u.u_id) AS `users`
FROM (
SELECT * FROM regions
WHERE r_alias LIKE '$region_alias'
) AS r
LEFT OUTER JOIN cities AS c ON (r.r_id = c.r_c_id)
LEFT OUTER JOIN users AS u ON (u.u_city = c.c_id)
GROUP BY r.r_id;
執行select語句,因爲它加入其餘表之前篩選到一個特定的區域。
(代碼是在MySQL 5.6.10測試)
只是爲了糾正你的術語 - 當你說「佔用」你意味着「有一個外鍵關係」(u_city作爲外鍵全市C_ID首要的關鍵) – Patashu