В таблице A есть атрибут, который сообщает, в какую таблицу он будет получен.
Пример:
Таблица A (Информация)
InfoID | Type
Таблица B (Студент)
StudentID | Name | Course |
Таблица C (Сотрудники)
EmployeeID | Name | Company |
Если type = 1, то получите информацию в таблице B (ученик)
InfoID | StudentID | Name | Course
Else получить информацию в таблице C (сотрудники)
InfoID | EmployeeID| Name | Company
Что-то вроде того:
SELECT my_columns
FROM A
LEFT JOIN B ON A.InfoID = B.InfoID and A.type=1
LEFT JOIN C ON A.InfoID = C.InfoID and A.type <> 1
А для столбцов вы можете использовать CASE/WHEN следующим образом:
SELECT A.InfoId,
MAX(CASE A.type = 1 THEN B.StudentID ELSE C.EmployeeID END) AS 'Employee/Student Id'
MAX(CASE A.type = 1 THEN B.Name ELSE C.Name END) AS 'Name'
MAX(CASE A.type = 1 THEN B.Course ELSE C.Company END) AS 'Company/Course'
FROM A
LEFT JOIN B ON A.InfoID = B.InfoID and A.type=1
LEFT JOIN C ON A.InfoID = C.InfoID and A.type <> 1
GROUP BY A.InfoID