在我的网站上复杂的Mysql查询

时间:2015-09-01 05:43:14

标签: php mysql laravel-4

我当前网站的情况基本上是一个复杂的提问者,有大约400个问题。

我有三张桌子。

1.Questions

ID , QID, Question_Text,Event_name

2.用户

ID , Name ,Event_name

3.Answers

ID, User_ID ,Question_ID , Answer_text

现在,每个用户都会对Answers表中的每个问题都有唯一的答案。

我的问题从这里开始。 我更新了问题表中的新问题,因此旧用户在新问题的答案表中没有答案,因此我的syatem会抛出错误。

所以我必须在这些用户的答案表中插入空行,并根据事件在答案表中不存在这些问题。

请帮我写这个查询

我的尝试失败

SELECT `user_id` FROM `answers` inner join users on answers.user_id=users.id inner join questions on questions.id=answers.question_id

谢谢

1 个答案:

答案 0 :(得分:0)

如果您有10000个用户并且每个问题将插入10000个记录,那将会产生极大的影响。随着时间的推移,用户将会增加。

如果您可以更改架构,那么它可能是另一种方式。例如 - 您的答案表看起来像 - 答案(ID,User_ID为STRING,Question_ID ),
Answer_text(Answer_id,User_id,Answer_text)。 在 Answer 表中,user_id列是字符串类型列,其中包含逗号分隔的user_id字符串(实际上逻辑上不表示为外键)。在 Answer_text 表中,user_id列是 Users 表的外键。获取记录后,您可以用逗号分隔字符串,并以数组形式获取每个user_id。

现在,当您添加问题时,默认情况下,所有用户ID都以字符串形式汇总并插入。仅插入1条记录。当任何用户回答时,您可以插入Answer_text表。