У меня есть что-то вроде этого:MySQL оптимизации запросов для OR с 3 таблицами
таблицы:
ct_lectures [id, l_id,name,position]
ct_teachers_lectures [id, t_id, l_id]
ct_teachers [id, name, surname, position]
ct_teachers_languages [id, t_id, lang_id]
Сначала я перечисляют все лекции, а затем я пытаюсь найти учителей, которые связаны с этими лекциями и говорить специфический язык:
SELECT DISTINCT ct_teachers.* FROM ct_teachers_lectures, ct_teachers, ct_teachers_languages WHERE (
(ct_teachers_lectures.l_id = 27 AND ct_teachers.id = ct_teachers_lectures.t_id AND ct_teachers_languages.t_id = ct_teachers_lectures.t_id) OR
(ct_teachers_lectures.l_id = 67 AND ct_teachers.id = ct_teachers_lectures.t_id AND ct_teachers_languages.t_id = ct_teachers_lectures.t_id) OR
(ct_teachers_lectures.l_id = 133 AND ct_teachers.id = ct_teachers_lectures.t_id AND ct_teachers_languages.t_id = ct_teachers_lectures.t_id) OR
(ct_teachers_lectures.l_id = 262 AND ct_teachers.id = ct_teachers_lectures.t_id AND ct_teachers_languages.t_id = ct_teachers_lectures.t_id)
ORDER BY ct_teachers.id DESC LIMIT 30
там может быть даже 15 лекций (выше пример с 4) Я хочу Seach, так что будет в 15 раз, что линия:
(ct_teachers_lectures.l_id = **ID** AND ct_teachers.id = ct_teachers_lectures.t_id AND ct_teachers_languages.t_id = ct_teachers_lectures.t_id) OR
Есть ли лучший способ получить этих учителей из базы данных вместо того, чтобы делать этот большой запрос? Или это нормально, что эти запросы такие большие?
Кроме того, вы можете использовать, где ct_tlect.l_id IN (27, 67, 133, 262) – DRapp
Красивая, спасибо! –