表A中有一个属性,它告诉它将获得哪个表。
例如:
表A(信息)
InfoID | Type
表B(学生)
StudentID | Name | Course |
表C(员工)
EmployeeID | Name | Company |
如果type = 1,则获取表B中的信息(学生)
InfoID | StudentID | Name | Course
其他在表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
关于mysql - 一个表与两个不同表的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49025753/