#sql #select
#sql #выберите
Вопрос:
select student_surname,
student_name,
student_recordbook,
student_kurs,
student_state,
student_dep_id,
student_kafedra_id
from
student
where student_studgroups = (select studgroups_number
from studgroups
join study on study_studgroups_id = studgroups_id
where studgroups_year != study_kurs
and study_state_id IN (1,2,3,4,5,6,7,21,22,23,24));
Мне нужно оптимизировать его без подзапроса.
Спасибо.
Комментарии:
1. Что вы хотите оптимизировать?
2. Вместо изображения, если вы поместите здесь фактический код, это будет легко понятно
3. Что не так с вложенным запросом? Обратите внимание, что ваш запрос завершится ошибкой, если вложенный запрос вернет более одной строки. Возможно, вы захотите изменить
student_studgroups = (
наstudent_studgroups IN (
Ответ №1:
Вы можете попробовать, как показано ниже-
select * from student a
inner join student_groups b on a.student_studgroup=b.studgroups_number
inner join study on study_studgroup_id=stud_Group_id
where (your condition --)
Ответ №2:
Пожалуйста, попробуйте это..
select *
from student s
join studgroups sg on (s.studygroups = sg.studgroups_number)
join study st on (sg.studgroupys_id = st.study_studgroups_id)
where sg.studgroups_year !=s.study_kurs
and s.study_state_id IN (1,2,3,4,5,6,7,21,22,23,24);
То, что я сделал здесь, я объединил все три таблицы с помощью primary и foriegn key .
Таким образом, вы можете получить тот же результат, используя JOIN, что и при использовании подзапроса.
Комментарии:
1. Это возвращает другой результат.