我需要帮助MySQL查询,这将显着优化我的Rails 3应用程序。
我有2个主要涉及的表:细分和组织
表格定义是:
段
组织
将片段视为播放列表中的曲目。可以覆盖轨道,因此覆盖_id。轨道也可以具有默认值,因此是default_id。如果轨道同时具有覆盖或默认,则覆盖应优先。如果这还不够棘手,还有另一个问题 - 覆盖必须考虑其相关组织的层次结构。
以下是我逐行对预期结果集的解释:
第1行 - 使用ID#9覆盖#1,因为它覆盖了段#1(覆盖#1 w / ID#5),但与ID 9关联的组织的祖先深度(2)低于与段ID#5关联的组织的祖先深度,即3。
第2行 - 使用ID#6覆盖#2,因为它覆盖了段#2,并且没有另一个覆盖可用于具有较低祖先深度的同一组织。
第3行 - 使用默认#2,因为段#3没有可用的覆盖。
第4行 - 使用了段#4,因为没有覆盖或默认可用。
我在查询中做了很多尝试,这些尝试会给我这些结果,而我却无法接近。我的最新尝试使用了一个UNION,它给了我有趣的结果,因为我可以看到正确的段列表和附加到底部的正确覆盖,但是,它远非我上面描述的。
我非常感谢任何帮助和/或指导。
谢谢!
路易斯