help Мне нужен быстрый запрос.Поиск с большого набора входных данных
вот мой случай:
У меня есть 2 таблицы, сотрудников и периоды.
скажем, сотрудники таблицы содержат emp_no, emp_name периоды таблицы содержат period_code, emp_no.
, который отлично выглядит, пока пользователь не вводит данные 30k и не ищет их всех.
моя первая идея что-то вроде этого
SELECT p.* from periods p
INNER JOIN employees e ON p.emp_no = e.emp_no
WHERE p.period_code = 'p01' and (e.emp_no IN (first 5k emp_no) or e.emp_no IN (another 5k emp_no), etc).
Но из этого запроса это обыкновение возвращать любой сотрудник, который не в этот период. Предположим, что в этот период работает только работник 10 тыс., Другие 10 тыс. - это реальные данные, но работники, не находящиеся в p01, а остальные 10 тыс. - это не существующие данные, а ввод и поиск пользователей.
У меня есть другая идея, но на самом деле не совсем уверен в этом. Создаю временную таблицу, и она будет вставлять все emp_no в поиск пользователя. , а затем я присоединяюсь к ним, чтобы он сообщил, какой сотрудник существует в период и в рабочем столе таблицы, какой сотрудник не в тот период и какой emp_no недействителен.
somehting как
SELECT t.emp_no,ee.emp_name,p.pcode from employee e
JOIN period p ON p.emp_no = e.emp_no
RIGHT JOIN temp_t t ON t.emp_no = p.emp_no
LEFT JOIN employee ee ON ee.emp_no = t.emp_no
, который дает хороший результат, потому что только emp01 не нуль в поле PCODE
вы, ребята, есть какой-либо лучший подход без вставки данных в временные таблицы?
пс: я не знаю, почему sqlfiddle не работает, вот некоторые для теста
CREATE TABLE employee
(`emp_no` VARCHAR(7), `emp_name` varchar(7))
;
CREATE TABLE period
(`pcode` VARCHAR(7), `emp_name` varchar(7))
;
CREATE TABLE temp_t
(`emp_no` VARCHAR(7))
;
INSERT INTO employee
(`emp_no`, `emp_name`)
VALUES
('emp01', 'name1'),
('emp02', 'name2')
;
INSERT INTO period
(`pcode`, `emp_no`)
VALUES
('p01', 'emp01')
;
INSERT INTO temp_t
(`emp_no`)
VALUES
('emp01'),
('emp02'),
('emp03')
;
, пожалуйста, попробуйте объяснить вам цель ... показать правильный образец данных и ожидаемый результат .. вам кажется, что мне кажется непонятным .. – scaisEdge
Я тоже не понимаю, что вы ищете. Вам нужен список всех сотрудников _in_ определенного «периода»? Не в? Что-то другое? –
Я прошу лучшего подхода, чтобы перечислить всех искомых сотрудников, которые в период и чей не в период и который empno не существует в db только с одним запросом. фактически я уже сделал. и как я это сделал? спасибо. –