我有一個像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