Mysql从一个表中获取一列并匹配第二个表中的多个记录

时间:2018-01-12 08:05:13

标签: mysql

我有3张桌子:

  • Classrooms
  • Courses
  • Members

Screenshot of tables

这是members

-----------------------------------------
|  Member Name  |     Preferences       |
-----------------------------------------  
|    Jhon Doe   |    CS201,CS304,CS604  |
|    Neo        |    CS201,CS504,CS302  |
|    Jhon       |    CS201,CS701,CS704  |
-----------------------------------------

偏好规则:

  • 如果有多名教师愿意参加一门课程,那么该课程的首选教师将是具有较高名称的教师(例如上述“偏好列表”表中的CS201和CS304)。

我的问题:

我如何从愿意在其偏好课程中选修一门课程的成员中获得成员的偏好

------------------------------------------------------
|  Course-Code  |     Willing Members   |  Preferred |
------------------------------------------------------  
|    CS201      |     Jhon Doe,Neo,Jhon |       Neo  |
|    CS304      |     Jhon Doe,Neo,Jhon |       Jhon |
------------------------------------------------------

1 个答案:

答案 0 :(得分:0)

您必须在公共属性的coursesmembers表之间执行join; course_id。结果是在course_id上​​为grouped并且更喜欢字段,以便使用group_concat function获得愿意的成员。这是查询:

SELECT A.course_id `Course-Code`, GROUP_CONCAT(DISTINCT B.name ORDER BY B.name SEPARATOR ',') 
`Willing Members`, B.prefer `Preferred` FROM courses A
LEFT JOIN members B ON A.course_id=B.course_id
GROUP BY A.course_id, B.prefer;