Re[13]: и еще один вопрос по реляционной структуре
От: Qulac Россия  
Дата: 30.10.24 17:59
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Qulac, Вы писали:


PD>>>Вот только с UNION вопрос. Таблицы-то сильно разные. В них вообще может не быть одинаковых по смыслу полей, кроме ID, и то, если он в них есть(они могли бы использовать ID базовой как свой PK). Что брать-то ? И как потом определить, откуда взяли ?


Q>>В чем проблема нужный запрос написать, sql поддерживает условные операторы CASE и IIF?


PD>Да ради бога, а что брать-то и как определить, откуда взяли


PD>В таблице группы есть одно поле number int. И FK на базовую

PD>В таблице факультет есть одно поле name varchar. И FK на базовую, конечно

PD>Что брать-то ?


Вот так например:
 DECLARE @student_id INT = 2;
declare @faculty varchar(50);
declare @group varchar(50);

   -- если у студента нету ссылки на факультет, то он зачислен в группу и все данные получаем по связи от группы
   if((select count(*) from students inner join students_sets on students.students_set_id=students_sets.students_set_id 
    inner join faculties on faculties.faculties_id=students_sets.students_set_id 
     where students.students_id = @student_id) = 0)
     begin
     set @group = (select groups.number 
       from students 
       inner join students_sets on students.students_set_id=students_sets.students_set_id 
       inner join groups on groups.groups_id = students_sets.students_set_id 
       where students.students_id=@student_id)
     set @faculty = (select faculties.Name 
     from students inner join students_sets on students.students_id=students_sets.students_set_id 
     inner join groups on students.students_set_id=groups.groups_id 
     inner join faculties on faculties.faculties_id= groups.faculties_id 
     where students.students_id=@student_id)
     end
   else
    begin
     set @faculty = (select faculties.Name 
     from students inner join students_sets on students.students_id=students_sets.students_set_id 
     inner join faculties on faculties.faculties_id=students_sets.students_set_id 
     where students.students_id = @student_id);
     end


select @faculty as 'Факультет', @group as 'группа'


Программа – это мысли спрессованные в код
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.