Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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_Phpgrid - Fatal编程技术网

从现有值在mysql视图中创建新列

从现有值在mysql视图中创建新列,mysql,phpgrid,Mysql,Phpgrid,我在这方面非常新,所以如果我能澄清,请告诉我。本质上,我希望在mysql视图中根据现有表中某列的值创建一个新列。我正在使用phpGrid在前端进行输出 例如,假设我有一个列question\u id: name | question_id | answer ---------------------------------- Joe | 1 | yes Joe | 2 | no Ann | 1 |

我在这方面非常新,所以如果我能澄清,请告诉我。本质上,我希望在mysql视图中根据现有表中某列的值创建一个新列。我正在使用phpGrid在前端进行输出

例如,假设我有一个列
question\u id

    name | question_id | answer
----------------------------------
    Joe  | 1           | yes
    Joe  | 2           | no
    Ann  | 1           | maybe
    Ann  | 2           | kinda
我有一个自定义视图
my_view
,我希望列的位置是这样的(不一定是前面有
question\u id=
,但任何有用的):

或者类似的东西。如何将
问题id
值变为列,并将答案放在正确的位置

此外,如果
name
来自一个表,而
question\u id
来自另一个表,我如何在
my\u视图中获得彼此正确关联的值<代码>名称
值通常具有重复项,但它们具有单独的条目ID

干杯,谢谢

EDIT:是正确的想法,但我发现错误的语法

另外,我不确定它是否解决了第二个问题,即通过唯一的条目ID来对齐数据。我尝试使用这个方法:修复不明确的问题,但随后出现错误#1060,即存在重复项

编辑2:下面是我用来尝试从两个单独的表中获取列的代码,包括两个表中的共享
registration\u id
列。我从上面的帖子中得到了关于解决模糊问题的代码:

CREATE VIEW access AS
    SELECT fname,lname,email,city,state,country_id,phone,payment_status,event_id,wp_events_attendee.registration_id,wp_events_answer.registration_id,question_id,answer
    FROM wp_events_answer
    JOIN wp_events_attendee ON wp_events_attendee.registration_id = wp_events_answer.registration_id 
它给了我“#1060-重复的列名'registration_id'”。也不确定如何将其集成到第页的代码中。我试着做一个测试:

  CREATE VIEW access AS
SELECT
    fname,lname,email,city,state,country_id,phone,payment_status,event_id,wp_events_attendee.registration_id,wp_events_answer.registration_id,question_id,answer,registration_id,
    MAX(IF(question_id = '1', status, NULL)) FIRST,
    MAX(IF(question_id = '11', status, NULL)) DOB,
FROM wp_events_answer, wp_events_attendee
JOIN wp_events_attendee ON wp_events_attendee.registration_id = wp_events_answer.registration_id 
GROUP BY registration_id;

但是得到了“#1064-您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以便在第6行的“来自wp#U events#answer,wp#events#attendee GROUP BY registration#id”附近使用正确的语法”。谢谢

假设您事先知道这些问题,这可以通过一系列的联合来实现-

恐怕我需要一些样本数据来回答你问题的第二部分

更新-我没有意识到额外的行是一个问题。下面的SQL FIDLE解决了这个问题


我对sql视图了解不多,但在连接表时,您的查询似乎有问题

如果需要联接3个表,请按照下面的查询进行操作

SELECT `table1`.`column1`,`table2`.`column2` 
FROM `table1` 
JOIN `mapping_table` 
JOIN `table2` 
ON `table1`.`table1_id`=`mapping_table`.`table1_foreign_key` 
AND `mapping_table`.`table2_foreign_key`=`table2`.`table2_id` 
GROUP BY `table1`.`group_column` 

希望这将帮助您创建所需的视图

如果您有生成语法错误的代码,那么请将其包含在问题中。谢谢您的建议。看起来有点过头了,但我会去探索。至于第二个问题,我提到的表存储事件注册数据。因此,“name”将注册多个事件,并回答相同的问题,但条目将由注册id分隔。一个表存储其名称、电子邮件和注册id。另一个表存储其对自定义问题的答案,但将其与相同的注册id链接在一起。问题:当我创建视图时,它不会链接正确行中的数据。我试图修复它,但出现了错误(有关详细信息,请参阅我的编辑)。再次感谢!请尝试这样做-您的代码有几处错误:1)DOB后面有一个不必要的逗号2)我认为FROM后面应该只跟一个表名(另一个在JOIN中引用)3)IF语句引用的列“status”在表架构中不存在。我建议对SQL联接进行一些研究,以便更好地理解如何从多个表中提取数据。谢谢-但这仍然为“Bob”和“Joe”创建了两个不必要的行。即使我调整了那里的值,使每个人在每列中都有答案,他们仍然将所有内容分隔在多行上。我重新编辑了代码,使之与我正在使用的代码相匹配,并简化了代码以进行测试,并采纳了您的建议,但我仍然得到了支持“#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第4行的wp_events_answer GROUP中的'1,IF(question_id='11',answer,NULL)11附近使用的正确语法。创建视图访问,选择注册id,MAX(IF(question_id='1',answer,NULL))1,MAX(IF(question_id='11',answer NULL))11从wp_events_answer GROUP BY registration_id;中,我稍微修改了数据和示例,以删除额外的行。每个受访者的答案现在都显示在一行上。我猜您的陈述不起作用是因为列名。试着写“作为问题1”,而不是简单的“1”
MAX(如果有)(问题id='1',答案,空)正如问题1所示,您好,谢谢!我需要连接两个表,而不是三个表。我认为我调整得不对,而且我不清楚映射表或外键代表什么?谢谢您的帮助。如果您只需要连接两个表,那么就更容易了。您不需要映射表。外键用于在表和表之间建立关系2个表(我建议你对此做更多的研究)。这个例子w3schools.com/sql/sql\u foreignkey.asp也会让你对外键有更好的了解。我需要知道fname、lname、email、city、state、country\u id、phone、payment\u status、event\u id、answer、re列对应的表‌​注册号是属于我的,所以我可以给你提供更好的答案
SELECT `table1`.`column1`,`table2`.`column2` 
FROM `table1` 
JOIN `mapping_table` 
JOIN `table2` 
ON `table1`.`table1_id`=`mapping_table`.`table1_foreign_key` 
AND `mapping_table`.`table2_foreign_key`=`table2`.`table2_id` 
GROUP BY `table1`.`group_column`