我需要建立一個結構如下報告:SQL:查詢同一列多次AS不同的列,具有多個值回到1元
名稱,Field_1,Field_2,Field_3
吉姆, opt_1,Y,12
簡,opt_2,N,64
諸如此類
我從Moodle的數據庫表拉,在以下所示的圖像結構秒。 mdl_user_info_data,mdl_user_info_field,mdl_user與其他列具有相同的列,我從它得到的所有名稱都是名稱,所以我不打擾將它包括在此處。這部分工作正常。
這是我能想出迄今最好的,所以你可以看到表如何加入:
SELECT
CONCAT (u.firstname, u.lastname) Name,
(SELECT d.data FROM mdl_user_info_data d JOIN mdl_user_info_field f ON f.id = d.fieldid WHERE f.shortname = "Field_1" GROUP BY d.userid),
(SELECT d.data FROM mdl_user_info_data d JOIN mdl_user_info_field f ON f.id = d.fieldid WHERE f.shortname = "Field_2" GROUP BY d.userid),
(SELECT d.data FROM mdl_user_info_data d JOIN mdl_user_info_field f ON f.id = d.fieldid WHERE f.shortname = "Field_3" GROUP BY d.userid),
FROM mdl_user u
JOIN mdl_user_info_data d ON d.userid = u.id
JOIN mdl_user_info_field f ON d.fieldid = f.id
GROUP BY d.userid
ORDER BY `Name` ASC
我知道我找錯了樹,我的子查詢,但不知道該怎麼做,以取代GROUP BYs。我當前的查詢將每一行中返回每個給定Field_x的所有值,當我只需要返回對應於第1列
任何幫助非常讚賞指定的用戶價值。
結果爲了更加清晰:我知道我可以做「GROUP_CONCAT(d .data ORDER BY d.userid)「Field_1,Field_2,Field_3」,'但是項目規範要求每個字段有單獨的列,而不是單個逗號分隔的連續列。我希望! – elBarfo