ご覧のとおり、キーワードが入力された場合に上記で使用したクエリは次のとおりです。
SELECT * FROM Question WHERE QuestionContent LIKE '%$each%';
これで、データベースにキーワード「Question」が含まれる25行があるので、検索ボックスにキーワード「Question」と入力すると、正しい出力に25行が表示されます。
問題は、他のテーブルをクエリに内部結合する必要があることです。将来、他のテーブルのフィールドの行を確認できるようにする必要があるため、クエリを次のように変更しました。
SELECT * FROM Answer a
INNER JOIN Question q ON a.QuestionId = q.QuestionId
JOIN Reply r ON q.ReplyId = r.ReplyId
WHERE QuestionContent LIKE '%$each%';
ここで、「質問」という単語をもう一度検索すると、結果に25行ではなく125行が表示されることになります。なぜこれを行うのでしょうか。また、これを修正する方法を知っている人はいますか。
以下は質問テーブルのフィールドです。
QuestionId, QuestionContent, ReplyId
以下は回答テーブルのフィールドです。
QuestionId, Answer
以下は、返信テーブルのフィールドです。
ReplyId, ReplyType