MySQL-在两个表上旋转一对多关系
我需要一个数据透视表,它既可以用于视图,也可以将数据转储到已经设置为数据透视表的现有表中。我的主要问题是知道如何选择和透视数据 样本数据 表1:MySQL-在两个表上旋转一对多关系,mysql,pivot,Mysql,Pivot,我需要一个数据透视表,它既可以用于视图,也可以将数据转储到已经设置为数据透视表的现有表中。我的主要问题是知道如何选择和透视数据 样本数据 表1: user_id user_email first_name last_name ------------------------------------------------------------- 1 jdoe@huh.com John Doe 2
user_id user_email first_name last_name
-------------------------------------------------------------
1 jdoe@huh.com John Doe
2 jcarter@aol.com Jimmy Carter
user_id type job_title job_description
---------------------------------------------------------
1 Job 1 Some Job play all day!
1 Job 2 Another Job all work no play!
2 Job 1 Clown IT's not funny
表2:
user_id user_email first_name last_name
-------------------------------------------------------------
1 jdoe@huh.com John Doe
2 jcarter@aol.com Jimmy Carter
user_id type job_title job_description
---------------------------------------------------------
1 Job 1 Some Job play all day!
1 Job 2 Another Job all work no play!
2 Job 1 Clown IT's not funny
数据透视表我想要实现的是:
为了便于使用,我缩短了表名和数据
uid email fname lname jtitle-1 jdesc-1 jtitle-2 jdesc-2
----------------------------------------------------------------------------
1 jdoe@> John Doe Some Job play all> Another J> all wo>
2 jcar@> Jimmy Carter Clown IT's not> null null
我四处寻找了一些例子,但没有一个是我想要的。更新
当然,在发布这篇文章后不久,我发现了一个解决方案。
这就成功了
MAX(IF(pa.fieldname='size',pa.fieldvalue,NULL))AS size您正在寻找的是一个Joe Celko(用于Smarties的SQL)-样式的数据透视,方法是根据主表的PK分组,并根据相对的“类型”有选择地选取table-2值
您正在寻找的是一个Joe Celko(SQL for Smarties)风格的数据透视,它根据主表的PK进行分组,并根据相对的“类型”选择性地选取table-2值
一个用户可以拥有的职位数量是否有限?是的,最多允许输入5个职位。当然,一旦我发布了我的问题,我就遇到了这个。。。这似乎很管用MAX(如果(pa.fieldname='size',pa.fieldvalue,NULL))作为大小是否存在一个用户可以持有的有限数量的职务?是的,最多允许输入5个职务。当然,一旦我发布了我的问题,我就遇到了这个。。。这似乎很管用MAX(如果(pa.fieldname='size',pa.fieldvalue,NULL))作为sizeSo这与我的解决方案类似,只是mines不需要一个group by。否则,那就太好了。你的解决方案对我的有什么想法吗?@ipixel我看不出你的解决方案,但是如果没有组子句,这个问题就没有正确的解决方案。如果删除该组,并在select子句中具有聚合函数(例如,
MAX
),则它将聚合所有行。如果在select子句中不提供max AGGRATE函数,它将不会选择正确的值。因此,这与我的解决方案类似,只是mines不需要group by。否则,那就太好了。你的解决方案对我的有什么想法吗?@ipixel我看不出你的解决方案,但是如果没有组子句,这个问题就没有正确的解决方案。如果删除该组,并在select子句中具有聚合函数(例如,MAX
),则它将聚合所有行。如果在select子句中不提供max AGGRATE函数,它将不会选择正确的值。