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을 할 수있는)
작동하지 않습니다.SELECT employees.emp_no, first_name, last_name, MAX(salary), MIN(salary)
FROM salaries
INNER JOIN employees ON employees.emp_no = salaries.emp_no
GROUP BY employees.emp_no, first_name, last_name
HAVING MAX(salary) > MIN(salary)
편집 :
감사를 선택하는 선택에서 새 열을 쿼리를 다시 구도를 추가했다. 나는 그것을 생각했지만 급여가 감소한 사람들을 선택할 수있었습니다. 그래서 우리는 날짜도 확인해야합니다 (employees.hire_date, salaries.from_date, salaries.to_date) –
당신의 요점을 봅니다. 편집을 확인하고 내 생각을 알려주십시오 – kbball
이유를 모르겠지만 MySQL이 구문 오류를 반환합니다. 'SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 'ON ON [...]' –