2016-10-24 22 views
0

2つのテーブルから値を返すために、クエリで2つの別々の内部テーブル結合を実行しようとしています。1つのクエリの2つのテーブル結合 - 混乱している結果

結果セットで1行が取得されています... pname = null、平均(給与)= null。 スキーマに11個のプロジェクトがあるため、結果セットには11個の行が含まれている必要があります。

誰かが正しい方向に向かうことができますか?

あなたは

答えて

2

あなたはgroup byが欠落しているありがとう:ほとんどのデータベースで

SELECT pname, avg(salary) 
FROM project p INNER JOIN 
    department d 
    on p.dnum = d.dnumber INNER JOIN 
    employee e 
    ON e.dno = d.dnumber 
GROUP BY pname; 

は、お使いのバージョンでは、明らかな構文エラーで失敗するでしょう。 ONLY_FULL_GROUP_BYモード(hereを参照)を使用する場合、MySQLはANSI標準のみを適用します。

+0

PNAMEしてグループを追加します。句は0行を返すようです。 –

+0

@ Matthew.learn。 。 。それは違う問題です。あなたの参加条件は間違っているようです。サンプルデータと希望の結果で別の質問をする必要があるかもしれません。 –

+1

@onedaywhen。 。 。私はあなたがそのコメントを誤解したと思う。それはOPの元の質問に関するものでした。私は明らかにした。 –

0

使用すると、外部結合の代わりに、内側の左 に参加したり、あなたは私にあなたのデータテーブルを表示することができます

0

あなたのクエリでdepartmentテーブルが必要ですか?

要約する必要があるすべてのデータが次のクエリによって返されますか?

SELECT pname, salary 
    FROM (SELECT salary, dno AS dnum FROM employee) e 
     NATURAL JOIN project; 

それがない場合、これはあなたが必要に要約することがあります

SELECT pname, AVG(salary) AS average_salary 
    FROM (SELECT salary, dno AS dnum FROM employee) e 
     NATURAL JOIN project 
GROUP 
    BY pname; 
関連する問題