mysql - 一张表与两张不同表的关系

标签 mysql sql database erd

表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/

相关文章:

database - 数据库调优和数据库查询优化有什么区别?

mysql - Laravel 无法选择最后一行。 "Call to a member function first() on a non-object"错误

php - 最近 15 分钟

php - 文件检索期间不执行 MySQL 查询

mysql连接同一个表的总和

c# - DataGridView 加载速度非常慢。如何优化 DataGridView 中的行添加?

php - mysql数据库问题导师和学员

mysql - 找不到列 : 1054 Unknown column &#039;playlist_entity_assets. play_list_id&#039

mysql - 故障安全 mysql 查询插入与其他表中的验证值

c# - 在 asp.net 中使用 sqldatasource 时出现 mysql sntax 错误