在下面的示例中,如何如图所示填充person_events表?
到目前为止我所拥有的:
insert into person_events
select p.id, null, null, null, null, null, null
from persons p
答案 0 :(得分:2)
为什么需要这个新表person_events
?
您已经有了表tickets
,该表保存了person
和events
之间的关系。因此,您可以使用以下查询来获取具有相关事件信息的人员:
SELECT p.ID, e.ID, e.date
FROM tickets t
INNER JOIN person p ON t.person_id = p.ID
INNER JOIN events e ON t.event_id = e.ID
WHERE p.ID = 1
每次更改person_events
或person
数据时,还必须更改events
表中的数据。因此,对规范化的数据库使用简单的查询(如上述查询)将是最佳解决方案。
答案 1 :(得分:0)
您的此方法在两者之间缺少“值”,请进行更改查询,请在询问之前通过在sql中运行进行检查。这是一个简单的问题。
插入person_events 价值观 选择p.id,null,null,null,null,null,null 来自人p
答案 2 :(得分:0)
为什么要创建一个person_events表格? 如果您执行
之类的操作SELECT tickets.person_id, events.id, events.date
FROM tickets INNER JOIN events on ( events.id = tickets.event_id )
这不是您想要的结果吗?
答案 3 :(得分:0)
尝试一下:
insert into person_events
select p.id
,1
,MAX(CASE WHEN event_id = 1 then e.date end)
,2
,MAX(CASE WHEN event_id = 2 then e.date end)
,3
,MAX(CASE WHEN event_id = 3 then e.date end)
from persons p
JOIN tickets t ON t.person_id = p.id
JOIN events e ON t.event_id = e.id
GROUP BY p.id