0

従業員データベースでクエリを実行しています。従業員の賃金が金額 $x を超える行を返したい

SELECT 
    employees_table.employee_id, 
    employees_table.employee_name,
    (SELECT SUM(wages_table.wages)
     FROM wages_table
     WHERE wages_table.employee_id = employees_table.employee_id) AS wages
WHERE wages >= 100"

「不明な列の賃金」を返しています

4

6 に答える 6

2

私はあなたが欲しいと思います:

SELECT employees_table.employee_id,
  employees_table.employee_name,
  SUM(wages_table.wages) AS wages
FROM employees_tablee
INNER JOIN wages_table ON wages_table.employee_id = employees_table.employee_id
GROUP BY 1, 2
HAVING SUM(wages_table.wages) >= 100
于 2013-11-12T10:51:32.677 に答える
1

句でエイリアスwages >= 100を使用することはできません。WHERE

あなたは単にJOINandGROUP BYクエリを作成しようとしているだけだと思います。HAVING次に、エイリアスが許可されているものを使用して、賃金でフィルタリングできます。

SELECT 
    e.employee_id, 
    e.employee_name,
    SUM(w.wages) AS wages
FROM wages_table w
JOIN employee_table e ON w.employee_id = e.employee_id
GROUP BY e.employee_id
HAVING wages >= 100
于 2013-11-12T10:50:36.233 に答える
0

次のように書き換えてみてください。

select employees_table.employee_id, employees_table.employee_name, SUM(wages_table.wages)
from employees_table,
     wages_table 
where wages_table.employee_id = employees_table.employee_id
group by employees_table.employee_id, employees_table.employee_name
having SUM(wages_table.wages) >= 100
于 2013-11-12T10:54:25.153 に答える
0

これを試して

select * from (
SELECT employees_table.employee_id, employees_table.employee_name,
        (SELECT SUM(wages_table.wages)
           FROM wages_table
       WHERE wages_table.employee_id = employees_table.employee_id) AS wages
       )tmp where wages>=100
于 2013-11-12T10:52:40.313 に答える
0

クエリを処理する手順は次のとおりです。

1) 発言より

2) どこで

3) 選択

4) 並べ替え

ご覧のとおり、Where は Select の前に実行されます。したがって、select で定義されたすべてのエイリアスは、Where ステートメントではまだ使用できません。回避策は、employee_id とその賃金の合計を提供する From 句で内部選択を使用することです。その後、後で参加することができ、エイリアスを使用できます。

于 2013-11-12T10:53:40.497 に答える
0

賃金テーブルと従業員テーブルの関係を説明する必要があります。

1 対 1 の関係の場合:

SELECT employees_table.employee_id, employees_table.employee_name, wages_table.wages
FROM wages_table, employees_table
WHERE wages_table.employee_id = employees_table.employee_id
AND wages >= 100

1対多の関係であれば、他の人が言ったようGROUP BYに必要です。SUM(wages_table.wages)

于 2013-11-12T10:57:00.260 に答える