my databaseには、従業員の過去または現在の給与をすべて格納するテーブル給与と、従業員を格納するテーブル従業員があります。入れ子選択から何かを選択
select first_name, last_name
from salaries
join employees on employees.emp_no = salaries.emp_no
where salaries.from_date > employees.hire_date
and salary >
(select salary from salaries
where salaries.emp_no = employees.emp_no and from_date = employees.hire_date)
group by salaries.emp_no
limit 10 ;
それが返されます:私は昇進得たすべての従業員を選択しようとしています
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Georgi | Facello |
| Chirstian | Koblick |
| Kyoichi | Maliniak |
| Tzvetan | Zielinski |
| Sumant | Peac |
| Mary | Sluis |
| Patricio | Bridgland |
| Eberhardt | Terkki |
| Cristinel | Bouloucos |
| Kazuhide | Peha |
+------------+-----------+
10 rows in set (10.05 sec)
今、私は彼らが持っている給与同時に選択しようとしていますが、彼ら(既にネストされた選択で選択されているため)雇用されています。
select salary from salaries where salaries.emp_no = employees.emp_no and from_date = employees.hire_date
からこのデータを取得する方法はありますか?私のようなものを試してみました
...
select first_name, last_name, first_salary.salary
from salaries join employees on employees.emp_no = salaries.emp_no
where salaries.from_date > employees.hire_date and salary >
(select salary from salaries where salaries.emp_no = employees.emp_no and from_date = employees.hire_date)
AS FIRST_SALARY
group by salaries.emp_no
limit 10 ;
...しかし、それはクリアリー(クエリがすでに非常に長いので、私たちは、そうでないUNIONを行うことができます)
を動作しません。
感謝の最初の給与を選択するように選択して新しい列を追加しました。私はそれを考えましたが、給与が減った人を選ぶことができました。だから私たちはまた、日付をチェックする必要があります(employees.hire_date、salaries.from_date、salaries.to_date) –
私はあなたのポイントを参照してください。編集をチェックして、あなたの考えを知らせてください。 – kbball
なぜか分かりませんが、MySQLは構文エラーを返します。「あなたはSQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が近くにあることを確認してください。 'ON ON [...] ' –