私のような質疑応答のウェブサイトがあります。私はこのようなテーブルを持っている:投稿とそれに関連するすべての投稿を選択するにはどうすればよいですか?
// 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または回答IDのどちらでもかまいません)
SELECT * FROM qanda WHERE id = :id OR related = :id
私のクエリは、同様: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
場合はこれらの3つの行を選択する必要があります。どうやってやるの?
スキーマを[質問と回答]表に分割し、親質問への回答ごとに外部キー制約を設定する方が理にかなっています。この現在のデザインは災害のためのレシピです – Alex
@Alexデータベースデザインを変更します*(質問と回答の2つの分離されたテーブルを作成する)*あなたが私のウェブサイトの次のバージョンで言ったように..現在私は問題を解決する必要があります。 mに直面した。 –
新しいデータベースデザインに移行することができれば、現在どのくらいのデータを保存していますか?これをお勧めします。 – Alex