【发布时间】:2015-10-24 23:12:02
【问题描述】:
我对此非常陌生,所以如果我能澄清一下,请告诉我。本质上,我希望根据现有表中列的值在 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 来自一个表,而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: 这是我用来尝试从两个单独的表中获取列的代码,包括两个表中都存在的共享 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
FROM wp_events_answer
JOIN wp_events_attendee ON wp_events_attendee.registration_id = wp_events_answer.registration_id
它给了我“#1060 - Duplicate column name '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 服务器版本相对应的手册,以了解在第 6 行的“FROM wp_events_answer, wp_events_attendee GROUP BY registration_id”附近使用的正确语法”。谢谢!
【问题讨论】:
-
如果您的代码会产生语法错误,请将其包含在您的问题中。