我有一个像SO这样的问答网站。我有一个表是这样的:如何选择帖子及其所有相关帖子?
// qanda
+----+----------+----------------------+---------+------+
| id | title | content | related | type |
+----+----------+----------------------+---------+------+
| 1 | a title | a content | NULL | 0 |
| 2 | | a content | 1 | 1 |
| 3 | a title | a content | NULL | 0 |
| 4 | | a content | 1 | 1 |
| 5 | | a content | 3 | 1 |
+----+----------+----------------------+---------+------+
/* type column: "0" means it is a question, "1" means it is a answer
related column: it contains the id number of its own question
*/
现在我需要选择一个问题,根据id
号自己所有的答案。 (即id
号码可以是问题的ID或答案的编号)。
这里是我当前的查询:
SELECT * FROM qanda WHERE id = :id OR related = :id
我的查询工作以及只有当:id
是一个问题的ID。 (我的意思是它不能正常工作,如果:id
是答案的编号)。
这里是预期的结果:
assuming either :id = 1 or :id = 2 or :id = 4
+----+----------+----------------------+---------+------+
| id | title | content | related | type |
+----+----------+----------------------+---------+------+
| 1 | a title | a content | NULL | 0 |
| 2 | | a content | 1 | 1 |
| 4 | | a content | 1 | 1 |
+----+----------+----------------------+---------+------+
正如我上面提到的,我需要选择那些三行如果:id = 1
或:id = 2
或:id = 4
。我怎样才能做到这一点?
将您的模式划分为问题和答案表格,然后对每个父问题答案都有一个外键约束会更有意义。这个当前的设计是一个灾难配方 – Alex
@Alex我会改变我的数据库设计*(为问题和答案创建两个分开的表)*就像你在我的网站的下一个版本中说的..目前我需要解决的问题我'米面临着。 –
您目前存储多少数据,如果您现在可以迁移到新的数据库设计,我会强烈推荐它。当你用这个当前的设计进行缩放时,你会碰到一些严重的性能瓶颈, – Alex