2011-09-30 47 views
1

我有一個動態創建複選框的表單。用戶登錄並在所有複選框中選擇0。複選框數組是從表'選項'生成的。表格將記錄提交到兩個表格「調查」(一個人數據記錄)和「選擇」(調查鍵和選項鍵(或鍵))中。 我想提取一份報告,其中顯示所有可能的選項作爲列標題,並列出選擇該選項的調查表中的人員。所以我的結果如下所示:將行顯示爲列的查詢結果

FirstAid Triage Firefighting HamRadio 
    Sam   Sue  Sam 
    Judy  Judy  Bill 
       Bob 

因此即使沒有人選擇它,所有選項都顯示在結果中。

的表的結構是:

 OPTIONS 
    option_id description 

    SURVEY 
    survey_id name 

    SELECTED OPTIONS 
    survey_id option_id 

這是實際的數據的簡化的例子,但包括關鍵部分(我想)。我如何使用SQL來獲得我需要的結果?

感謝

+3

進行樞軸/交叉表查詢的方法,根據數據庫的類型而變化。請指出是否使用Oracle,MySql,Sql-Server等。 – dave

+0

這是postgres 8.1。表單是PHP,我使用PDO查詢數據庫並使用Pear Excel Writer將結果發送到Excel。 Thaks-- – Jazzy

+0

但是,任何方法都可以。我主要是在尋找邏輯。 – Jazzy

回答

1

免責聲明:我沒有使用過的Postgres在幾年那麼有可能是完成這一任務比我列出的那些更好的方法。

選項1:使用CaseWhen陳述如在下面的鏈接解決方案中所做的那樣。
correct way to create a pivot table in postgresql using CASE WHEN

選項2:使用在tablefunc contrib可作爲在下面的鏈接的解決方案做了Crosstab功能。
PostgreSQL Crosstab Query

的文檔crosstab tablefunc contribhttp://www.postgresql.org/docs/9.1/static/tablefunc.html

+0

謝謝。我已經閱讀了其中的一些內容,但很難將其應用於我的情況。儘管感謝指針。 – Jazzy