【发布时间】:2019-05-28 10:33:47
【问题描述】:
我有 4 个表如下:
1) 课程
| ID - > Primary Key | Name
-------------------------------
| 1 | Course 1
| 2 | Course 2
| 3 | Course 3
2) 个国家
| IDPrimary Key | Name
-------------------------------
| 1 | Country 1
| 2 | Country 2
| 3 | Course 3
3) 大学
| ID - > Primary Key | Name | country_id
---------------------------------------------------
| 1 | University 1 | 1
| 2 | University 2 | 1
| 3 | University 3 | 3
4) 大学课程
| ID - > Primary Key | university_id | course_id
----------------------------------------------
| 1 | 1 | 2
| 2 | 3 | 2
| 3 | 3 | 3
现在,我需要在 core PHP 中为 android 应用程序创建一个 REST API,因为我将获得两个参数 country_id 和 course_id。两者都将包含多个值,例如 country_id = "3,4,5" 和 course_id = "1,6,8"。
我必须根据国家和课程回复所有相关大学。
我尝试了以下查询,但没有得到想要的输出,所以如果有人对我的问题有任何想法,请帮助我。
SELECT * FROM universities LEFT JOIN countries ON countries.id = universities.country_id LEFT JOIN university_courses ON universiity_courses.university_id = universities.id LEFT JOIN courses ON courses.id = university_courses.course_id WHERE FIND_IN_SET(universities.country_id, ?) AND FIND_IN_SET(university_courses.course_id, ?)
如果course_id = 1,2 和country_id = 2,3,我想要的输出应该是:
| university_id |
| 3 |
更新:
上述问题已解决,但现在面临的新问题是多次得到相同的university 结果,例如:
如果course_id = 2,3 我得到的回复是:
|university_id |
------------------
|3 |
|3 |
为此,我使用了GROUP BY 子句,但如果我删除GROUP BY 会得到500 Internal Server Error 它会正常工作可能是什么问题?
我的新查询如下:
SELECT * FROM universities LEFT JOIN university_courses ON university_courses.university_id = universities.id LEFT JOIN courses ON courses.id = university_courses.course_id LEFT JOIN countries ON countries.id = universities.country_id WHERE FIND_IN_SET(university_courses.course_id, ?) AND FIND_IN_SET(universities.country_id, ?) GROUP BY university_courses.university_id
【问题讨论】:
-
更新您的问题添加适当的数据样本..您的实际结果和预期结果