2017-11-11 2 views
0

私は2つのテーブル "従業員"と "ポジション"を持っています最初のテーブルの行数に基づいて2番目のテーブルから位置の名前を表示する方法は?

"従業員"の表に表示されている位置の名前を表示するクエリを作成したいと思う "従業員"の外部キー "ID_of_Position"。 私はこのような何かを思い付いたが、それは動作しない場合があります。

SELECT Employees.ID_of_Position, Positions.ID_of_Position, Positions.Name_of_Position 
FROM Positions 
WHERE Employees.ID_of_Position in (SELECT ID_of_Position 
            FROM Employees 
            GROUP BY ID_of_Position 
            HAVING COUNT(ID_of_Position 
           )=1) 
INNER JOIN Employees ON Positions.ID_of_Position = Employees.ID_of_Position; 
+0

あなたは、MySQLまたはSQL Serverを使用していますか?彼らは同じではありません。あなたの投稿のタグを修正してください。 –

+0

私はmysqlを使用して間違って申し訳ありません –

答えて

1

適切な構文は次のようになりますとの位置がない限り、これは(質問に答えていない

SELECT e.ID_of_Position, p.ID_of_Position, p.Name_of_Position 
FROM Positions p JOIN 
    Employees e 
    ON p.ID_of_Position = e.ID_of_Position 
WHERE e.ID_of_Position in (SELECT ID_of_Position 
          FROM Employees 
          GROUP BY ID_of_Position 
          HAVING COUNT(ID_of_Position) = 1 
         ); 

正確に1人の従業員)、少なくとも構文的には正しいです。

SELECTFROM、およびWHERESELECT文のすべての句であることを理解することが重要です。 JOINFROM句の演算子です。

+0

うーん、それは動作しますが、それはまた、それは位置の名前だけを表示させる方法もIDを表示する? –

+1

あなたが好きなものだけを選択して使用してください SELECT p.Name_of_Position FROM .... あなたは基本的なSQL構文を少し見てください...... – Radu

0

少なくとも後の参加、および括弧で何かが終わりがあるべきである...

 SELECT Employees.ID_of_Position, Positions.ID_of_Position, Positions.Name_of_Position 
     FROM Positions 
     INNER JOIN Employees ON Positions.ID_of_Position = Employees.ID_of_Position; 
     WHERE Employees.ID_of_Position in (SELECT ID_of_Position 
              FROM Employees 
              GROUP BY ID_of_Position 
              HAVING COUNT(ID_of_Position)=1 
) 
関連する問題