私はこれらの2つのテーブルを持っています:
1. users
-id
-name
-email
-rank
2. pages
-user
-id
ユーザーからすべてのデータを選択し、彼が書き込んだページ数を数える必要があります(ページからユーザーはユーザーテーブルからのユーザーのIDです)。
1つの複雑なクエリにできますか?
select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id;
複雑なクエリにすることはできませんが、簡単なクエリを次に示します。
SELECT u.name, u.email, u.rank, u.id, count(p.id) as 'PageCount'
FROM Users u
JOIN Pages p ON
p.id = u.id
GROUP BY u.name, u.email, u.rank, u.id
はい、次のようにします。
select u.id, u.name, u.email, u.rank, count(p.id) as 'counter' from users u
inner join pages p on p.user = u.id
group by u.id, u.name, u.email, u.rank
ユーザー情報でグループ化し、各ユーザーのページ数を計算(カウント)します。
これはどう。
select u.id, count(p.id) as 'number_of_pages_wrote'
from users u inner join pages p
on u.id = p.id
group by u.id;
select users.id, users.name,users.email,users.rank, count(pages.id)
from users,pages
where users.id = pages.user
group by users.id
あなたはこのようにそれを行うことができます-
SELECT u.*, p.count
FROM users u,
(SELECT pa.id, count(1) FROM pages pa WHERE pa.id = u.id) p
WHERE u.id = p.id
この単純なクエリはどうですか
SELECT user, COUNT(*) AS pages FROM page GROUP BY user
これは、によって実現できますJOIN
。
例えば、
SELECT * FROM pages
INNER JOIN users ON (users.id=pages.user)
WHERE users.id=5
ユーザーID5からすべてのページを選択します。残りは集計関数を含めるようにします;)