2014-09-22 107 views
0

是否有可能將表(或表引用)存儲在另一個表中,可能是BLOB類型?MySQL |我可以將表名存儲在不同的表中嗎?

我有四個表:主題,學生,pupil_age &工作人員。我想創建一個列出表格的主表格,以及其他一些細節,如表格名稱(table_desc)供用戶查看。

例如:

table_id--|--table_name--|--table_desc 
----------|--------------|------------ 
-------0--|--subject-----|--Subjects-- 
-------1--|--pupil-------|--Pupils---- 
-------2--|--pupil_age---|--Pupil age- 
-------3--|--staff-------|--Staff----- 

我不想table_name的存儲爲文本,而是作爲一種數據類型,讓我對其執行操作。

我有一個javascipt菜單,允許用戶過濾,例如, pupil_age = 11或者staff_id = 10078。

目前的菜單顯示是這樣,當你將鼠標懸停在「添加過濾器」:

Add filter > Pupils 
-----------> Staff 
-----------> Subject 

徘徊小學生揭示了另外兩個選項,然後將值顯示,當你將鼠標懸停在小學生年齡:

Add filter > Pupils > Pupil name 
--------------------> Pupil age > 11 
--------------------------------> 12 
--------------------------------> 13 
-----------> Staff 
-----------> Subject 

在該示例中,光瞳是包含名稱的表,而pupil_age是包含值11,12,13,

我想驅動這個菜單中,服務器側,從表中表格本身。我正在使用MySQL,但我的問題是這是否可以在任何數據庫中使用。

我最近的想法是,一個表是否可以包含諸如被識別爲表格的表格名稱之類的對象,而不是存儲爲文本。

任何幫助非常

讚賞艾瑪

+2

您需要動態mysql,實際上是將一個字符串連接在一起,然後執行它。 – Mihai 2014-09-22 13:43:15

回答

2

沒有,是在MySQL無特殊數據類型存儲「表格名」,「欄」等。

要回答您似乎要問的問題,在單個查詢中是否有可能從列返回值,然後將這些值用作SQL查詢中的標識符(table_name,column_name)...答案是否定的。不在一個聲明中。

要回答標題中的問題,是的,可以將table_name存儲在列中。 (請注意, MySQL的一個名爲information_schema數據庫提供的架構信息。列在information_schema.tablesinformation_schema.columns表中的數據類型將是數據類型合適的選擇,如果你需要存儲架構信息在自己的表。


如果你獲得的DBMS如何執行SQL語句的理解,那就是,在處理SQL文本步驟的實際序列...即語法檢查(識別關鍵字,識別標識,在適當的順序,等等),語義檢查(標識符引用o有效的數據庫對象,執行該語句的用戶具有適當的權限),準備執行計劃(可用索引,可能的聯合排列),然後執行準備好的計劃...

那麼,爲什麼從語句的執行返回的列值(或作爲綁定參數提供的值)不能在語句中被稱爲標識符。

+0

謝謝你的迅速 - 而且,我懷疑是正確的 - 答覆。你是完全正確的,我試圖將值存儲在一個表中,然後在隨後的查詢中將它們用作標識符。你認爲PL/SQL還是非MySQL數據庫可以處理它? – emma 2014-09-22 14:14:09

+0

@emma:沒有數據庫可以處理單個SQL語句中的數據庫。我知道每個關係數據庫都有一些檢索模式信息的機制。並且任何數據庫都將允許您提交使用檢索到的模式信息的後續語句。但我不知道有哪個數據庫可以讓你在一個聲明中實現這一點,除了調用存儲程序。 (可能在MySQL,SQL Server,Oracle等編寫一個可以運行多個語句的PROCEDURE,以實現特定的結果,但我們更傾向於在應用程序中執行此操作,而不是db。 – spencer7593 2014-09-22 14:24:21

+0

@Emma:在存儲程序,創建一個字符串,然後將其提交給數據庫,因爲SQL語句被稱爲「動態SQL」,而MySQL存儲的程序具有支持該機制的機制,請參閱'PREPARE'語句中的文檔。)Oracle PL/SQL和SQL Server Transact-SQL提供了等效的功能。 – spencer7593 2014-09-22 14:27:35

相關問題