【发布时间】:2015-05-18 13:46:26
【问题描述】:
我有两张桌子,sections 和 articles。最初它是一对多的关系,因此articles 有一个sectionID 列。然后有一天决定让每篇文章属于两个部分。我选择不处理重构数据,而不是制作另一个“articles-in-section”表,而是在articles 表中添加了一个additionalSectionID 列。现在我有一个问题。
我想显示与给定部分相关的所有文章,无论是作为主要部分还是次要部分。本质上,我正在寻找两个表之间的某种双重联接。
这两个问题对同一问题有答案 - 1,2,但使用不同的数据库服务器。有没有办法在 PHP/MySQL 中做到这一点?
表格的结构基本上是这样的:
-- SECTIONS:
id title description moderatorID url
-- ARTICLES:
id title shortDesc fullText photo sectionID additionalSectionID
【问题讨论】:
-
听起来是完成重构的好时机。
-
我和你在一起,谁会为它贴上
$? :) -
这可能通过简单的
UNION就可以实现。请发布两个表中的示例,以及您期望查询输出的示例。 -
@jegesh 为什么你认为构建一个合适的多对多连接表比实现一个性能可能很差的查询要花费更多的时间?无论哪种情况,您都需要更改应用程序中的查询,并且创建新表大约需要 10 分钟。
-
@MikeBrant 问题是该网站最初是(不是由我编写的)没有框架,使用 spaghetti。以这种方式更改数据库结构将意味着在代码中查找 10 多个位置并更改每个位置,每次都可能出现拼写错误或其他错误。网站所有者已承诺对糟糕的代码进行大规模重构/大修,但在那之前......