проблема при создании запроса для scenerio - PullRequest
0 голосов
/ 01 ноября 2019

Добрый день !!

Я пытаюсь достичь одной цели: я хочу перечислить всю работу, которая соответствует критериям пользователя

мои таблицы похожи на это

таблица работодателя имеет столбец

диплом Среднее образование
магистр BS PhD

аналогично

кандидат имеет такой же столбец

таблица кандидатов

Диплом средней школы
Бакалавриат PhD

Что я хочу добиться, это перечислить всех работодателей, где каждый столбец работодателя соответствует кандидату.

, например

кандидат имеет этот параметр

диплом = 1, средняя школа = 1, бакалавр = 1, магистр = 1, доктор философии = 0

работодатель 1 имеет этот критерий

диплом = 1, средняя школа = 1, BS = 0, магистры = 0, PhD = 0

работодатель 2 имеет этот критерий

диплом = 1, средняя школа = 1, BS = 1, магистры = 1, PhD= 1

работодатель 3 имеет этот критерий

диплом = 1, секondarySchool = 0, BS = 0, магистры = 0, phd = 0

. В этих примерах работодатель 1 и работодатель 3 должны указать в списке, как работодатель1 ищет парня, который имеет диплом и среднее образование. поскольку кандидат имеет равные и более чем и соответствует этим критериям, то этот работодатель будет указан. работодателю 3 нужен только диплом, и какой кандидат имеет, так что этот тоже будет указан. где работодателю 2 также нужен доктор философии, которого нет у кандидата, так что этот работодатель не будет указан.

Во-первых, я, хотя и использую ИЛИ в запросах MySQL, но он дает мне всех работодателей, так как он соответствует 1 или более, перечисляет тех работодателей

Я также пытался использовать союз и союз, что будетвозьмите 2 ^ 8, так как у меня есть 8 столбцов в каждой таблице, что не очень хорошо для меня.

было бы замечательно, если бы кто-то мог направить меня или дать мне знать, если мне нужно прочитать какой-то учебник, чтобы добиться этого,

1 Ответ

0 голосов
/ 01 ноября 2019

Это выглядит как простая вещь: просто объединить все навыки и требования и сравнить их как целые числа (предполагается, что вы не можете получить степень доктора философии, не получив диплом, второе высшее образование, степень магистра и т.д.)

drop table if exists t,t1;
create table t
(diploma int,secondarySchool int, BS int , masters int, phd int);
create table t1
(id int, diploma int,secondarySchool int, BS int , masters int, phd int);
insert into t values
(1 ,  1 , 1 , 1, 0);
insert into t1 values
(1,1,1,0,0,0),
(2,1,1,1,1,1),
(3,1,0,0,0,0);

select t1.*,concat(t1.diploma,t1.secondaryschool,t1.bs,t1.masters,t1.phd) requirementlevel,
            concat(t.diploma,t.secondaryschool,t.bs,t.masters,t.phd) candidatelevel
from  t1
cross join  t 
where concat(t1.diploma,t1.secondaryschool,t1.bs,t1.masters,t1.phd) <=
            concat(t.diploma,t.secondaryschool,t.bs,t.masters,t.phd);

+------+---------+-----------------+------+---------+------+------------------+----------------+
| id   | diploma | secondarySchool | BS   | masters | phd  | requirementlevel | candidatelevel |
+------+---------+-----------------+------+---------+------+------------------+----------------+
|    1 |       1 |               1 |    0 |       0 |    0 | 11000            | 11110          |
|    3 |       1 |               0 |    0 |       0 |    0 | 10000            | 11110          |
+------+---------+-----------------+------+---------+------+------------------+----------------+
2 rows in set (0.00 sec)

Кстати, если бы вы опубликовали свои образцы данных в удобной форме, я бы использовал это вместо того, чтобы что-то придумывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...