我最近问了这个问题。
我有一个包含三个表的关系数据库。第一个包含与第二个相关的 id。第二个包含与第三个相关的 id。第三个包含我所追求的结果。
是否可以通过单个查询来查询第一个表中的 id,它给出了第三个表中与之相关的所有结果?
我选择的解决方案是:
select * from table1 t1 join table2 t2 on t1.t2ref = t2.id join table3 t3 on t2.t3ref = t3.id
添加 where 子句以搜索 table1 中的某些行
其中 t1.field = '值'
我的新问题是:
我意识到我也需要插入三个表。我正在处理的是预订系统。是否可以编写一个在查询三个表后直接插入到三个表中的查询(使用连接?)。
我还有另一个考虑因素是我是否应该使用事务来确保同时运行两个查询......两者都发现 id 是“未保留的”,然后导致双重预订,还是有更简单的方法?