1

我有两个表,我尝试创建一个表来管理数据。

第一个表是“问题”:

questions (question_id, key1, key2, key3, key4, user_id, creation_date, class, type     permission)

和另一个:

questions_keys (question_key_id, question_key_name, question_key_refers_to)

每次我按下存储在表 question_keys 中的提交按钮时,都会有四条记录和一条在问题表中。这是一个例子:

问题键:

1, mathematics, 0
2, history, 1
3, physics, 2
4, geography, 3

和问题表:

(1, 1, 2, 3, 4, 8, 2012-12-19 20:41:48, 4, multiple_choice,     0)

我需要的查询:在表中显示 question_key_name,其中表问题中的 key1、key2、key3、key4 等于 question_key_id。

并在一行中显示如下内容:

mathematics, history, physics, geography, multiple_choice, 2012-12-19 20:41:48 ETC

我是新来的,我需要你的帮助..非常感谢!

4

2 回答 2

2

尝试这个:

SELECT qk1.question_key_name qk2.question_key_name, qk3.question_key_name, 
       qk4.question_key_name, q.type, q.creation_date 
FROM questions q 
INNER JOIN question_keys qk1 ON q.key1 = qk1.question_key_id 
INNER JOIN question_keys qk2 ON q.key2 = qk2.question_key_id 
INNER JOIN question_keys qk3 ON q.key3 = qk3.question_key_id 
INNER JOIN question_keys qk4 ON q.key4 = qk4.question_key_id;
于 2012-12-20T16:56:13.810 回答
1

使用这种设计,您必须四次加入表格:

SELECT question_key_name
FROM question_key qk
JOIN questions q on q.key1 = qk.question_key_id
WHERE q.question_id = ?

然后对其他 3 重复。您可以将它们全部合并在一起,这将返回 4 行。

至于只返回一行,请查看 GROUP_CONCAT,但这会将 question_key_name 值作为一列返回。您最好将应用代码中的 4 行结合起来。

于 2012-12-20T16:49:51.047 回答