Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-在两个表上旋转一对多关系_Mysql_Pivot - Fatal编程技术网

MySQL-在两个表上旋转一对多关系

MySQL-在两个表上旋转一对多关系,mysql,pivot,Mysql,Pivot,我需要一个数据透视表,它既可以用于视图,也可以将数据转储到已经设置为数据透视表的现有表中。我的主要问题是知道如何选择和透视数据 样本数据 表1: user_id user_email first_name last_name ------------------------------------------------------------- 1 jdoe@huh.com John Doe 2

我需要一个数据透视表,它既可以用于视图,也可以将数据转储到已经设置为数据透视表的现有表中。我的主要问题是知道如何选择和透视数据

样本数据

表1:

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函数,它将不会选择正确的值。