Mentor table
+--------------+
| id | name |
+-----+--------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+-----+--------+
MentorLanguage table
+------------------+
| id | language |
+-----+------------+
| 1 | english |
| 1 | french |
| 1 | german |
| 2 | chinese |
| 2 | english |
| 3 | russian |
| 3 | german |
| 3 | greek |
+-----+------------+
Student table
+--------------+
| id | name |
+-----+--------+
| A | name1 |
| B | name2 |
| C | name3 |
+-----+--------+
StudentLanguage table
+------------------+
| id | language |
+-----+------------+
| A | english |
| A | french |
| B | chinese |
| B | german |
| C | russian |
| C | spanish |
| C | greek |
+-----+------------+
Я хочу, чтобы соответствовать mentor
с student
на основе language
, таким образом, что, например:выберите строки, основанные на ИНЕКЕ, которые возвращают несколько строк
если student A
знает english
и french
, он будет сравниваться со всеми mentors
, которые знают не менее english
или french
.
student A (english, french)
---------------------------------
mentor 1 (english, french, german);
mentor 2 (chinese, english);
Я попытался
select * from Mentor m
where m.id =
(select ml.id from MentorLanguage ml, StudentLanguage sl
where ml.language like sl.language
group by ml.id)
, который не работает, так как Subquery returned more than 1 value
.
вы можете изменить значение = с IN следующим образом: WHERE m.id IN (SELECT ... – wxyz