Mysql 三重内连接保持标题
你好 我有以下三个表(功能、人员和数据) 表格特征Mysql 三重内连接保持标题,mysql,sql,Mysql,Sql,你好 我有以下三个表(功能、人员和数据) 表格特征 --------------------------- | featureId | featureName | --------------------------- | 1 | Weight | | 2 | Age | | 3 | Height | --------------------------- 餐桌上的人 ---------------------
---------------------------
| featureId | featureName |
---------------------------
| 1 | Weight |
| 2 | Age |
| 3 | Height |
---------------------------
餐桌上的人
---------------------------
| personId | personName |
---------------------------
| 1 | John |
| 2 | Doe |
| 3 | Mark |
---------------------------
表数据
(pId=personId
fId=特征ID)
我知道第三桌是一场噩梦,但这就是我所拥有的。
是否可以构建一个返回(包含在PHP中使用的标题)的查询
看起来像是三个内部连接,但标题使它更复杂,我无法理解
谢谢你的帮助 您可以通过加入表和
MAX
函数中的CASE
来实现
SELECT
p.personName
,MAX(CASE WHEN f.featureName='Weight' THEN d.value END) Weight
,MAX(CASE WHEN f.featureName='Age' THEN d.value END) Age
,MAX(CASE WHEN f.featureName='Height' THEN d.value END) Height
FROM people p
LEFT JOIN data d ON(p.personId=d.pId)
LEFT JOIN features f ON(f.featureId=d.fId)
GROUP BY d.pId
你想要什么,你尝试过什么?你的问题是什么?抱歉,看起来标记中有错误,但问题还是被发送了。现在它是正确的。
--------------------------------
| Name | Weight | Age | Height |
--------------------------------
| John | 80 | 28 | 175 |
| Doe | 70 | 22 | 168 |
| Mark | 100 | 44 | 180 |
--------------------------------
SELECT
p.personName
,MAX(CASE WHEN f.featureName='Weight' THEN d.value END) Weight
,MAX(CASE WHEN f.featureName='Age' THEN d.value END) Age
,MAX(CASE WHEN f.featureName='Height' THEN d.value END) Height
FROM people p
LEFT JOIN data d ON(p.personId=d.pId)
LEFT JOIN features f ON(f.featureId=d.fId)
GROUP BY d.pId