私はInsurance Quotingシステムを構築しており、質問する質問がいくつかあります。私の質問は1つのテーブル(questionsTable)に保存され、回答は回答テーブル(answersTable)に格納され、質問/回答アクション(つまり、引用を参照するか別の質問を促すか)は、actionsテーブル(actionsTable) 。WHERE句でMySQLのフィールド値を使用することはできますか?
ここではいくつかのサンプルデータ
questionsTable
だquestionId | questionDescription
1 | What percentage of the roof is flat?
2 | Please provide details of the roof construction:
3 | How many rooms does the building have?
answersTable
answerId | questionId | answerValue
1 | 1 | < 50%
2 | 1 | > 50%
3 | 2 | freeForm
4 | 3 | 1
5 | 3 | 2
6 | 3 | 3
7 | 3 | 3+
actionsTable
actionId | answerId | action
1 | 2 | 2
2 | 6 | refer
3 | 7 | decline
テーブルのリンクはこれです方法: 各質問には回答があり、データベースから選択できる特定の回答には特定の行動が含まれています - 別の質問をしたり、引用を拒否したりします。彼らが別の質問をする場合、質問のIDはアクションフィールドに格納されます。
基本的に、質問に「> 50%」と答えた場合1「屋根の何パーセントが平らですか?」あなたは答えに質問2を与えられます。
私の質問は、 'questionsTable'のすべての質問を選択するにはどうすればいいのですか?IDは 'actionsTable'の 'action'値のいずれとも等しくないので、 'top-level'セット?
私はこれの設計、別の質問に
'SELECT questionDescription FROM questionsTable
WHERE questionsTable.questionId != 'this' AND questionsTable.questionId != 'this', etc
を選択するために、私は「actionsTable」からすべての数値を選択するために、2つのMySQLのクエリ、1を使用して簡単にPHPでこれを行うことができます知っていますデータベースは正規化されるが、動的である管理チームは、管理ページを使用して、質問、回答、およびアクションを追加/削除することができます。
あなたは絶対的な伝説です。 – Sjwdavies
ご迷惑をおかけして申し訳ありませんが、もっと詳しく説明できますか? – Sjwdavies
LEFT JOINには、「左」(最初の)テーブルのすべての行が何であっても保持されます。これらの行が存在する場合、それらは他のテーブルの一致する行と結合されます。そうでなければ、それらのフィールドはNULLです(正確にはあなたが探しているもの) –