我不确定这是否可能,而且很难描述。
我想以SELECT
这种方式返回查询:
标识符 | 姓名 | 电子邮件 | 狗名 | 鱼名 -------------------------------------------------- ----- 44 | 约翰 | john@email.com | 邋遢 | 56 | 简 | 简@email.com | | 河豚 72 | 乔 | 乔@email.com | 火花 | 鳃
有3张表:
tbl_option_fields
tbl_person
tbl_person_optionals
第一个表简单地定义了无限的可选字段。以下是列:
选择 | 选择题 ------------------ 1 | 狗名 2 | 鱼名 3 | 电子邮件
第二个表只是我为人们保存数据的地方:
标识符 | 姓名 --------------- 44 | 约翰 56 | 简 72 | 乔
最后一张表让我存储存在的任何可选数据pID
身份证 | 标识符 | 选择 | 选择值 ---------------------------------- 1 | 44 | 1 | 邋遢 2 | 56 | 2 | 河豚 3 | 72 | 1 | 活泼的 4 | 72 | 2 | 鳃 5 | 72 | 3 | joe@email.com 6 | 56 | 3 | jane@email.com 7 | 44 | 3 | john@email.com
SELECT 语句的结果需要opttitle
在结果的标题中显示。我不擅长子查询,这可能是一个笨蛋。
这是我的尝试:
SELECT p.*, opt.optval
FROM `tbl_person` p
LEFT OUTER JOIN `tbl_person_optionals` opt ON p.pID = opt.pID
WHERE 1
这个查询会导致重复的结果,我相信我明白为什么。
标识符 | 姓名 | 选择值 ----------------------------------------- 44 | 约翰 | john@email.com 44 | 约翰 | 邋遢 56 | 简 | jane@email.com 56 | 简 | 河豚 72 | 乔 | joe@email.com 72 | 乔 | 活泼的 72 | 乔 | 鳃
希望我解释说我想水平显示可选字段,而不是在行中显示新记录。这可以做到吗?