0

ユーザー、都市、地域の 3 つのテーブルがあります。

users - u_id, u_city
cities - c_id, r_c_id
regions - r_id, r_alias

どこusersとでとでcities結ぶ. リージョン テーブルの r_alias があります。私が選択したその地域のユーザーの数を取得することは可能ですか (私は r_alias を持っています) ( )。u_city = c_idcitiesregionsr_c_id = r_idCOUNT(u_id)

助けてくれてありがとう!

4

3 に答える 3

1

はい、可能です。

最初にテーブルを結合する必要があります。

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
于 2013-04-13T14:45:48.193 に答える
1

これを試して:

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'
于 2013-04-13T14:46:48.897 に答える
1

近くでselectステートメントを実行する方が効率的です

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;

残りのテーブルを結合する前に特定のリージョンにフィルター処理するためです。

(コードは MySQL 5.6.10 でテスト済み)

于 2013-04-13T15:38:33.310 に答える