2012-11-14 36 views
-2

我有多個產品表(彼此不相關)。所有產品表有一些像前綴用於從多個產品表獲取產品的mysql存儲過程

computer_products 
kitchen_products 
..... so on 

我有所有的前綴都在一個單獨的表。我必須從所有表格中獲取產品。

我知道我可以使用存儲過程,但我是mysql查詢和存儲過程的新手。我正在努力學習,但這是緊急的。

爲存儲過程的任何幫助嗎?

在此先感謝

+0

這些表格可以有不同的結構。你想如何輸出它們?描述你的表格,顯示所需的結果。 – Devart

+0

結構相同。而且我必須從這些表中的某些修復列中獲取相同名稱的值。 – Lucifer

+0

...來自所有具有指定前綴的表格? – Devart

回答

1

你需要這樣的查詢 -

SELECT 
    GROUP_CONCAT(CONCAT('SELECT col1, col2 FROM ', table_name) SEPARATOR ' UNION ') 
    INTO @sql 
FROM 
    information_schema.tables 
WHERE 
    table_schema = '<database name>' -- spcecify <database name> 
    AND table_name LIKE '%_products'; 

這個查詢將建立SELECT查詢,並把它傳遞給 -

SELECT col1, col2 FROM computer_products 
UNION 
SELECT col1, col2 FROM kitchen_products 

您可以使用此查詢產生的呢@sql變量。

然後使用prepared statement執行它。

+0

讓我試試。我將恢復 – Lucifer

+0

如何在此處添加table_name。我不能硬編碼。我在單獨的表中有表格前綴。 GROUP_CONCAT(CONCAT('SELECT col1,col2 FROM',table_name)SEPARATOR'UNION') – Lucifer

+0

你不應該在這裏硬編碼。看看WHERE子句,有你需要的,我的意思是表前綴 - 'LIKE'%_products''。該查詢從MySQL元數據 - 表名稱等中檢索數據。在WHERE子句中設置數據庫,運行該查詢+ SELECT @sql。變量'@ sql'包含結果查詢。問問題;) – Devart

相關問題