簡體   English   中英

從現有值在mysql視圖中創建新列

[英]Creating a new column in mysql view from an existing value

我在這方面是個新手,所以請讓我知道是否可以澄清。 本質上,我希望基於現有表中某個列的值在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正確關聯的值彼此my_view name值通常具有重復項,但是它們具有單獨的條目ID。

干杯,謝謝!

編輯: 使用不同的值作為列創建MySQL視圖是正確的主意,但我收到有關語法錯誤的錯誤#1064。

另外,我不確定它是否解決了第二個問題,即通過唯一的條目ID來使數據對齊。 我嘗試使用此功能: 1052:字段列表中的列“ id”不明確 ,無法解決不明確的問題,但隨后出現錯誤#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-重復的列名'registration_id'”。 也不確定如何使用不同的值作為列將其集成到在“ 創建MySQL”視圖中看到的代碼中。 我試圖做一個測試:

  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'附近使用”。 謝謝!

我對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` 

希望這會幫助您創建所需的視圖

假設您事先知道了問題ID,則可以使用一堆UNIONS來實現-http://sqlfiddle.com/#!9/ 00a0c/8

恐怕我需要一些示例數據來回答您問題的第二部分。

更新-我沒有意識到額外的行是一個問題。 以下SQL提琴解決了這個問題。

http://sqlfiddle.com/#!9/0f8c7/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM