【发布时间】:2020-11-12 09:25:53
【问题描述】:
我会简化表格,但我基本上有一个名为sheet的表格,它可以分配给一个或两个people;所以我将这些存储在工作表中;
sheet
-----
sheet_id
value
person_1_id
person_2_id
我有这样的人员表;
people
------
person_id
name
所以我希望能够通过分配给他们的人的 ID 加载工作表,并加入到人员表中以获取他们的姓名。所以说我在找person_id: 2
SELECT s.*, p.*, p2.* FROM sheet s
JOIN people p ON s.person_1_id = p.person_id
JOIN people p2 ON s.person_2_id = p.person_id
WHERE person_1_id = 2 OR person_2_id
我想从查询中返回一致的 json 对象,因此从其中一个连接返回重复的字段似乎非常浪费。我只想加入 person_id WHERE person_id 在工作表中设置。它可能分配了两个人,但我只会按 ONE person_id 加载结果。
类似
{ sheet_id: 1, value: 1000, person_id: 2, name: 'John' }
我只想加入工作表中的列有值的地方,如果它不是整数,它将为 NULL。
我确实考虑过将这一切都转移到另一个表格中,例如 sheet_to_person;但这会使工作表的所有插入和更新变得非常复杂,因为表格等上需要两个插入。
【问题讨论】:
-
最好有一个
sheet_person ( sheet_id int, person_id int )表并加入它。这将使所有查询变得更好。