У меня есть 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) university_courses
| ID - > Primary Key | university_id | course_id
----------------------------------------------
| 1 | 1 | 2
| 2 | 3 | 2
| 3 | 3 | 3
Теперь мне нужно создать один REST API в Ядро PHP для Android-приложения, в котором я получу два параметра 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
, но получаю 500 Internal Server Error
, если я удаляю GROUP BY
Это будет работать нормально Что может бытьпроблема?
Мой новый запрос выглядит следующим образом:
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