2017-01-07 5 views
0

私はクエリを書こうとしていますが、私は立ち往生しています。 以前は仕事の詳細と従業員の詳細を持つ2つのテーブルがありました。今私は従業員のテーブルから1つの列を取り出し、それをジョブテーブルに追加しました。group byを使用してクエリを書き込もうとすると、結果が現実的ではありません。MySQLクエリ:グループを使用して非現実的な結果を得る

マイクエリ:

SELECT SAL, COUNT(COMM), COUNT(EMPNO) FROM EMPLOYEE, JOB GROUP BY JOBCODE; 

出力:

+---------+-------------+--------------+ 
| SAL  | COUNT(COMM) | COUNT(EMPNO) | 
+---------+-------------+--------------+ 
| 3000.00 |   4 |   12 | 
| 3000.00 |   4 |   4 | 
| 3000.00 |   0 |   4 | 
+---------+-------------+--------------+ 

それはされている必要がありますが:

+---------+-------------+--------------+ 
| SAL  | COUNT(COMM) | COUNT(EMPNO) | 
+---------+-------------+--------------+ 
| 3000.00 |   1 |   3 | 
| 1800.00 |   1 |   1 | 
| 2000.00 |   0 |   1 | 
+---------+-------------+--------------+ 

は基本的に私はCOMMと4で人の4倍の数を取得していますそれぞれのEMPLOYEEの倍数。また、私は3つのうちの1つだけを取得していますSAL

答えて

1

あなたの問題はGROUP BYではない、それはJOIN - またはその欠如です。

非常に単純なルール:は、FROM句にカンマを使用します。

SELECT JOBCODE, AVG(SAL), COUNT(COMM), COUNT(EMPNO) 
FROM EMPLOYEE e JOIN 
    JOB j 
    ON e.?? = j.?? 
GROUP BY JOBCODE; 

は、あなたの質問には、テーブル間の適切JOIN条件を指定するための十分な情報を提供していません:常には、適切な、明示的なJOIN構文を使用します。

GROUP BYを実行すると、他のすべての列には集計関数が必要です。

+0

5 'で回答を受け付けます。本当にありがとう、私は本当にMySQLで新しくなったので、参加について何も知らなかった。 'JOIN'のコードがしていることを私に説明できますか?疑問符は 'JOBCODE'と' JOBNO'で、完全に動作します。 –

関連する問題