【发布时间】:2013-07-10 19:43:33
【问题描述】:
我不确定这是否可能,而且确实很难描述。
我想以这种方式返回SELECT 查询:
有 3 个表:
tbl_option_fields
tbl_person
tbl_person_optionals
第一个表简单地定义了无限的可选字段。以下是列:
选择 |选择题 ------------------ 1 |狗名 2 |鱼名 3 |电子邮件第二张表只是我为人们保存数据的地方:
标识符 |姓名 --------------- 44 |约翰 56 |简 72 |乔最后一张表让我存储 pID 存在的任何可选数据
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 |乔 |鳃希望我解释说我想水平显示可选字段,而不是在行中显示新记录。 这个可以吗?
【问题讨论】:
-
您正在寻找的是一个数据透视查询,但 mysql 不直接支持它们。有一些变通方法,但它们会造成难看的语法,并且当您在透视结果中添加/想要更多列时,它们不会自动扩展。
-
这可能就是我需要听到的。谢谢!
标签: mysql subquery pivot-table entity-attribute-value