46000未満の従業員名を返すためにサブクエリを結合しようとしています。正しい結果をサブクエリするにはどうすればいいですか
これは私がそれをやっているところです。
Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid
from salary
Where salary > 46000
) as s
On e.eid = s.eid;
46000未満の従業員名を返すためにサブクエリを結合しようとしています。正しい結果をサブクエリするにはどうすればいいですか
これは私がそれをやっているところです。
Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid
from salary
Where salary > 46000
) as s
On e.eid = s.eid;
を使用することができますので、給料はなく、個別の給与テーブルで、社員テーブルに格納されていません。給与テーブルには従業員IDが含まれています。これにより、これは1:nの関係になります。つまり、1人の従業員が複数の給与を持つことができます。
私はあなたのテーブルを知らないので、私はこれの理由を知らない。従業員には多くの仕事があり、基本給与や追加給与などの給与の一部がある場合や、給与が有効期限であることを示す日付範囲がある場合などです。知りません。
単純に、従業員の給与を加算して合計を得ることができます。その後、従業員テーブルから従業員名を選択します。従業員テーブルでは、給与テーブルで給与が46000未満です。
select ename
from employee
where eid in
(
select eid
from salary
group by eid
having sum(salary) < 46000
);
これを使用すると、EID列一時dinamicaのこの値を含まないテーブルや参加中句の
Select e.eid, e.ename
From employee_table e
Inner Join (
Select salary, eid
from salary
Where salary < 46000
) as s
On e.eid = s.eid;
を失敗を選択しない場合は、動の一時テーブルを使用しているbeacuseあなたは、内側には動の一時テーブルなし
に参加Select e.eid, e.ename
From employee_table e
INNER JOIN salary s On e.eid = s.eid
where s.salary < 46000
私は '>'ではなく '<'で始まります。 –
あなたは 'e.eid、e.ename'を選択します。名前だけが必要な場合は、 'select e.ename'を選択します。 –