是否可以在WHERE子句中使用MySQL字段值?
问题描述:
我正在建立一个保险报价系统,并提出了一些问题。我的问题存储在一个表(questionsTable)中,我的答案存储在答案表(answersTable)中,问题/答案操作(即是引用报价还是提示另一个问题)存储在动作表(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存储在操作字段中。所以基本上,如果你回答问题1'> 50%''屋顶的百分比是平的吗?'你会得到问题2来回答。
我的问题是,如何从'questionsTable'中选择所有的问题,哪里的ID不等于'actionsTable'中的任何'action'值 - 因此给了我'*别'的问题组?
我知道我可以用两个MySQL查询,1至从“actionsTable”选择所有的数值做这个简单的PHP,那么另一个选择问题
'SELECT questionDescription FROM questionsTable
WHERE questionsTable.questionId != 'this' AND questionsTable.questionId != 'this', etc
这样做的设计数据库将被规范化,但也是动态的,例如管理团队可以使用管理页面添加/删除问题,答案和操作。
答
SELECT questionDescription FROM questionsTable
LEFT JOIN actionsTable ON questionsTable.questionId=actionsTable.action
WHERE actionsTable.action IS NULL
这加入两个,保留questionsTable中的所有值,并且只显示在动作字段的actionsTable中没有匹配的地方。
你是一个绝对的传奇。 – Sjwdavies 2010-11-29 18:48:55