這對我來說有點難,我可能會用完全錯誤的方式去解決。搜索列格式
我在數據庫中存儲了一組選項,其中每個選項都是它自己的列。但是,用戶可以更改選項的數量,因此我需要一種允許PHP始終選擇所有選項的方法。
比方說,我有這些列:options_dialog_1,options_dialog_2,options_dialog_3,options_dialog_4
可能有不同數量的這些對話框選項列,例如,另一個叫options_dialog_5可以添加。
如何根據列名格式選擇所有對話框選項列?
這對我來說有點難,我可能會用完全錯誤的方式去解決。搜索列格式
我在數據庫中存儲了一組選項,其中每個選項都是它自己的列。但是,用戶可以更改選項的數量,因此我需要一種允許PHP始終選擇所有選項的方法。
比方說,我有這些列:options_dialog_1,options_dialog_2,options_dialog_3,options_dialog_4
可能有不同數量的這些對話框選項列,例如,另一個叫options_dialog_5可以添加。
如何根據列名格式選擇所有對話框選項列?
我認爲你在這裏有一個數據庫設計問題;重複這樣的列總會導致麻煩。我想你需要兩個表,一個是用戶,一個用於定義是這樣的選項...
USERS
id
name
OPTIONS
id
user_id
option_dialogue_number
option_dialogue_value
那會使列成行,這是相當容易得到的。
我不知道我是否理解這個問題。您是否在尋找
SELECT * FROM options_table
喜歡的東西(人造SQL - 不會工作)
SELECT (SELECT column_names where column_name LIKE 'options_dialog%')
FROM options_table
的聲音,我並不可行(雖然我相信it's possible不知)。如果您需要此選項,請考慮refactoring the database design或maybe use a bitmask將選定選項存儲在單個列中。
它會工作,但表格相當大,*是非常緩慢..我想我可以使用不同的表格選項,雖然 – Matt 2010-07-03 12:35:55
Brian's answer真的會在更長的時間內給你帶來好處。但是如果你需要很快看到一些東西,你可以查看「元數據字典」(存儲關於所有其他表,列等信息的表)。你可以從第一個查詢中獲得列的列表,並用它來構建第二個列。
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='mytable' AND COLUMN_NAME LIKE 'options_dialog%'
訪問manual on INFORMATION_SCHEMA獲取更多好吃的東西。
我看,我會去做這 – Matt 2010-07-03 12:36:25
這是一個入門主題... http://www.databasedev.co.uk/database_normalization_basics.html – 2010-07-03 12:54:16