2

私はこれらの2つのテーブルを持っています:

1. users
   -id
   -name
   -email
   -rank

2. pages
   -user
   -id

ユーザーからすべてのデータを選択し、彼が書き込んだページ数を数える必要があります(ページからユーザーはユーザーテーブルからのユーザーのIDです)。

1つの複雑なクエリにできますか?

4

8 に答える 8

3
select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id;
于 2012-06-12T11:03:52.433 に答える
2

複雑なクエリにすることはできませんが、簡単なクエリを次に示します。

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
于 2012-06-12T11:04:18.913 に答える
0

はい、次のようにします。

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

ユーザー情報でグループ化し、各ユーザーのページ数を計算(カウント)します。

于 2012-06-12T11:02:49.043 に答える
0

これはどう。

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;
于 2012-06-12T11:03:00.747 に答える
0
select   users.id, users.name,users.email,users.rank, count(pages.id) 
from     users,pages 
where    users.id = pages.user 
group by users.id
于 2012-06-12T11:03:26.620 に答える
0

あなたはこのようにそれを行うことができます-

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 
于 2012-06-12T11:03:51.580 に答える
0

この単純なクエリはどうですか

SELECT user, COUNT(*) AS pages FROM page GROUP BY user
于 2012-06-12T11:11:53.713 に答える
-1

これは、によって実現できますJOIN

例えば、

SELECT * FROM pages 
INNER JOIN users ON (users.id=pages.user) 
WHERE users.id=5

ユーザーID5からすべてのページを選択します。残りは集計関数を含めるようにします;)

于 2012-06-12T11:03:11.057 に答える