0
我一直在构建PHP网页很长一段时间了,但我对MySQL数据库并不熟悉。我已经彻底地寻找了像我这样的问题的解决方案,但没有任何运气(尽管有类似的问题回答,我无法弄清楚如何实施提供的解决方案)。mysql分层递归查询
我有一个3级分层结构5页的表如下:
Clients (id, name, ...)
↳ Projects (id, client_id, name, ...)
↳ Contacts (id, project_id, name, ...)
↳ Files (id, project_id, name, ...)
↳ Events (id, project_id, name, ...)
我试图实现与一捻递归查询:如果我提供任何级别的ID(与指定电平该ID属于),它应该以树状结构返回该级别的父级和子级记录。
例如:我有一个项目ID,所以我想要返回该项目所属的客户端(父)以及项目的联系人,文件和事件(子项)。或者如果我有一个事件的ID,那么我想输出项目(父),客户(父母),以及联系人和文件(与事件处于同一级别)。
重点是查看选定项目的完整历史记录。这甚至有可能与一个查询...?任何建议,欢迎和赞赏!
感谢您的快速回复和示例!看起来我是在同一条路径上:我试过了LEFT JOIN(没有UNION,因为这些表有不同的列数),但是不知道如何过滤返回的数据集。你如何区分不同的层次来构建一个树形结构?还有,你能指出我设计的弱点吗('巨大的冗余')? – laciii
作为冗余的一个例子,如果一个联系人与多个项目相关联,该怎么办?据我所知,这里没有“关卡”,但请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to -ME将要-A-极简单的SQL查询 – Strawberry