объединение двух таблиц на основе данных на основе диапазона - PullRequest
0 голосов
/ 20 июня 2020

Имея таблицу с данными сотрудников и таблицу заработной платы. Попытка объединить зарплату с таблицей сотрудников на основе опыта и должности.

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.

1 Ответ

0 голосов
/ 20 июня 2020
select employee.id, employee.age, employee.name, employee.exp, employee.posi, salary.salary
from employee, salary
where employee.exp > salary.exp_from and employee.exp<= salary.exp_to;

РЕЗУЛЬТАТ:

1 10  A   1.1  Jr 100
4 22  D   2.04 Jr 200
2 25  B   3.1  sr 300
3 15  C   3.5  Sr 300
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...