0

私は現在、SQL 言語が初めてで、以下の表から正しい情報を取得する方法を理解するのに苦労しています。

スタッフテーブル

+------+----------+---------+-----------------+------+------+
| s_id | initials | s_name  | pos             | qual | d_id |
+------+----------+---------+-----------------+------+------+
| AA   | A.       | Tom     | Lecturer        | PhD  | RELI |
| BBB  | J.J.     | Jason   | Senior Lecturer | PhD  | RELI |
| CCC  | B.A.     | Andy    | Senior Lecturer | PhD  | BIOL |
| DD   | M.       | Mark    | Professor       | PhD  | BIOL |
| EE   | W.       | Alen    | Professor       | BA   | BIOL |
+------+----------+---------+-----------------+------+------+

調査表

+------+-------+------------+-----------+
| s_id | r_id  | str_date   | fin_date  |
+------+-------+------------+-----------+
| BBB  | RESH1 |       1990 |      1998 |
| BBB  | RESH2 |       1980 |      1985 |
| DD   | RESH4 |       1995 |      1999 |
| AA   | RESH4 |       1992 |      1999 |
| CCC  | RESH8 |       1989 |      1994 |
| EE   | RESH5 |       1988 |      1989 |
+------+-------+------------+-----------+

スタッフ s_name と、各人が行ったさまざまな調査の数を含む新しいテーブルを作成しようとしています。

私が今まで持っているのは

select distinct s.s_name, count(r.s_id) 
from staff s 
inner join research r 
on s.s_id = r.s_id 
where s.s_id = r.s_id;

私の結果は、

+---------+---------------+
| s_name  | count(r.s_id) |
+---------+---------------+
| Jason   |             6 |
+---------+---------------+

私が間違っていることは何ですか?

前もって感謝します。

4

2 に答える 2

0

Staff テーブルと Research テーブルの S_ID のデータ型を比較します。テーブルのいずれかに空白がある場合があります。それ以外の場合はTrim、結合条件で関数を使用して、正しい結果セットを受け取ることができます。

クエリは、Staff テーブルの個別の ID のみを返します。group bySQL ステートメントでを使用する必要があります。

お役に立てれば!

于 2012-11-08T12:30:17.567 に答える
0

これでうまくいくと思います:

select s.s_name, count(*) 
from staff s 
inner join research r 
on s.s_id = r.s_id 
group by r.s_id
于 2012-11-08T12:16:16.670 に答える