推 herman602:謝謝! 10/19 20:15
※ 引述《herman602 (奸商)》之銘言:
: 我現在有五個資料表
: 1. `audience` 儲存分眾資訊
: (id, name) 主鍵為id
: 2. `table` 儲存表單基本資料的
: (id, name, word, pdf) 主鍵為id
: 3. `table_class` 儲存表單類別名稱敘述用的
: (id, name) 主鍵為id
: 4. `table_class_data` 儲存表單與類別關係用的 (一個表單可以在多個類別之下)
: (id, table_id, table_class)
: 主鍵為id, table_id參考`table`.`id`, table_class參考`table_class`.`id`
: 5. `table_audience` 儲存表單分眾導覽資訊用的 (一個表單可以在多個分眾之下)
: (id, table_id, audience_id)
: 主鍵為id, table_id參考`table`.`id`, audience_id參考`audience`.`id`
: 我現在的問題是
: 要依據不同的audience, 印出不同表格類別, 然後再印出表格(沒有在該分眾的不顯示)
: 現在的狀況是, 有些表格類別下面可能沒有任何表格要印(因為都不屬目前網頁選的分眾)
: 要怎麼知道這些表格類別下面是否有表格需要印呢
: 沒有的話, 該表格類別就不要被SELECT出來....
你的問題應該是出在第一句的順序。
資料串連順序本來就是:分眾 1<->* 表單 1<->* 表單類別
只要能串出第三項的表單類別,前面的分眾與表單這二項就不會是空值,
自然不會有 "沒有的話, 該表格類別就不要被SELECT出來" 的問題。
因此第一步:把上述資料一對多對多的三階關連,展開成為一個單一的view1。
(或是實體table,視目前使用資料庫而定)
第二步:利用view1對分眾及表單類別做匯總,可得view2,即[分眾->表單類別]關係。
第三步:選取分眾及表單類別後,先用table_class_data取得[表單類別->表單]關係,
再與view1比對,排除於view1不存在的關係,即得最終結果。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.140.95
※ 編輯: onear 來自: 111.251.140.95 (10/12 23:48)