根据现有值在 mysql 视图中创建新列
Creating a new column in mysql view from an existing value
我在这方面非常陌生,如果我能澄清一下,请告诉我。本质上,我希望根据现有 table 中列的值在 mysql 视图中创建一个新列。我在前端使用phpGrid输出。
例如 - 假设我有现有列 question_id
:
name | question_id | answer
----------------------------------
Joe | 1 | yes
Joe | 2 | no
Ann | 1 | maybe
Ann | 2 | kinda
并且我有自定义视图 my_view
,我希望其中的列是这样的(不一定要在前面加上 question_id=
,但不管怎样):
name | question_id=1 | question_id=2
------------------------------------------
Joe | yes | no
Ann | maybe | kinda
或类似的东西。如何让 question_id
值成为列,并将答案放在正确的位置?
此外,如果 name
来自一个 table,而 question_id
来自另一个,我如何才能在 my_view
中获得正确关联的值? name
值通常有重复项,但它们有单独的条目 ID。
干杯,谢谢!
编辑: Create MySQL view using distinct values as columns 是正确的想法,但我收到关于错误语法的错误 #1064。
此外,我不确定它是否解决了让数据按唯一条目 ID 对齐的第二个问题。我尝试使用此:1052: Column 'id' in field list is ambiguous 来解决模棱两可的问题,但随后出现错误 #1060,指出存在重复项。
编辑 2: 这是我用来尝试从两个单独的 table 中获取列的代码,包括存在的共享 registration_id
列同时。我从上面的 post 中得到了关于解决模棱两可的问题的代码:
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 MySQL view using distinct values as columns 中看到的代码中。我试着做了一个测试:
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 服务器版本对应的手册,了解在 'FROM wp_events_answer, wp_events_attendee GROUP BY registration_id' 附近使用的正确语法在第 6 行”。谢谢!
假设您提前知道问题 ID,这可以通过一堆 UNIONS 来实现 - http://sqlfiddle.com/#!9/00a0c/8
恐怕我需要一些示例数据来回答您问题的第二部分。
更新 - 我没有意识到额外的行是个问题。以下 SQL fiddle 解决了这个问题。
我对 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`
希望这会帮助您创建您想要的视图
我在这方面非常陌生,如果我能澄清一下,请告诉我。本质上,我希望根据现有 table 中列的值在 mysql 视图中创建一个新列。我在前端使用phpGrid输出。
例如 - 假设我有现有列 question_id
:
name | question_id | answer
----------------------------------
Joe | 1 | yes
Joe | 2 | no
Ann | 1 | maybe
Ann | 2 | kinda
并且我有自定义视图 my_view
,我希望其中的列是这样的(不一定要在前面加上 question_id=
,但不管怎样):
name | question_id=1 | question_id=2
------------------------------------------
Joe | yes | no
Ann | maybe | kinda
或类似的东西。如何让 question_id
值成为列,并将答案放在正确的位置?
此外,如果 name
来自一个 table,而 question_id
来自另一个,我如何才能在 my_view
中获得正确关联的值? name
值通常有重复项,但它们有单独的条目 ID。
干杯,谢谢!
编辑: Create MySQL view using distinct values as columns 是正确的想法,但我收到关于错误语法的错误 #1064。
此外,我不确定它是否解决了让数据按唯一条目 ID 对齐的第二个问题。我尝试使用此:1052: Column 'id' in field list is ambiguous 来解决模棱两可的问题,但随后出现错误 #1060,指出存在重复项。
编辑 2: 这是我用来尝试从两个单独的 table 中获取列的代码,包括存在的共享 registration_id
列同时。我从上面的 post 中得到了关于解决模棱两可的问题的代码:
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 MySQL view using distinct values as columns 中看到的代码中。我试着做了一个测试:
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 服务器版本对应的手册,了解在 'FROM wp_events_answer, wp_events_attendee GROUP BY registration_id' 附近使用的正确语法在第 6 行”。谢谢!
假设您提前知道问题 ID,这可以通过一堆 UNIONS 来实现 - http://sqlfiddle.com/#!9/00a0c/8
恐怕我需要一些示例数据来回答您问题的第二部分。
更新 - 我没有意识到额外的行是个问题。以下 SQL fiddle 解决了这个问题。
我对 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`
希望这会帮助您创建您想要的视图