Имея таблицу с данными сотрудников и таблицу заработной платы. Попытка объединить зарплату с таблицей сотрудников на основе опыта и должности.
Employee Table
id| age | name | exp | posi
_ _ __ ___ ____
1 | 10 | A | 1.1 | Jr
_ _ __ ___ ____
2 | 25 | B | 3.1 | Sr
_ _ ____ __ ___
3 | 15 | C | 3.5 | Sr
_ ___ ___ ___ __
4 | 22 | D | 2.04 | Jr
Salary Table
posi| exp_from| exp_to |Salary
___ ________ _______ ___
Jr | 1 | 2 | 100
___ ________ _______ ___
Jr | 2 | 3 | 200
___ ________ _______ ___
Sr | 3 | 4 | 300
___ ________ _______ ___
Sr | 4 | 5 | 400
Tried Query =
SELECT
IFNULL(salary_table.salary,'not found') as salary,
employee_table.*,
FROM
`employee_table`
LEFT JOIN
salary_table
ON employee_table.posi = salary_table.posi
AND employee_table.exp >= salary_table.exp_from
AND employee_table.exp <= salary_table.exp_to
Проблема: 1. Имея данные более 50 КБ, некоторые строки получают неправильную зарплату, где exp составляет 1,21 или 1,80
2. Из-за большого количества данных запрос занимает около 2-3 минут на выполнение в phpmyadmin.