Одна таблица отношений с двумя разными таблицами

0

В таблице 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
  • 0
    Добавьте некоторые примеры данных таблицы и ожидаемый результат - в виде форматированного текста, а не изображений. Также покажите нам вашу текущую попытку запроса. И пометьте базы данных, которые вы используете.
  • 0
    @jarlh теперь все в порядке, спасибо :)
Теги:
database
erd

1 ответ

0

Что-то вроде того:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню