我接管了管理我工作的公司的內部網站,並且我需要從mysql數據庫中獲取數據。我遇到的問題是數據在6個不同的表中,全部使用相同的字段,但行都是唯一的(行在一個表中開始,然後在處理完成後被完全移動到不同的表中)僱員)。查看哪張表的結果是
有沒有簡單的方法來查詢所有6一次?能夠檢索它來自的表的標題也是有用的。
我正在使用PHP來運行查詢並顯示它。創建另一個表來定義所有行的位置,有一個唯一的id,然後是另一個表所在的表?
我接管了管理我工作的公司的內部網站,並且我需要從mysql數據庫中獲取數據。我遇到的問題是數據在6個不同的表中,全部使用相同的字段,但行都是唯一的(行在一個表中開始,然後在處理完成後被完全移動到不同的表中)僱員)。查看哪張表的結果是
有沒有簡單的方法來查詢所有6一次?能夠檢索它來自的表的標題也是有用的。
我正在使用PHP來運行查詢並顯示它。創建另一個表來定義所有行的位置,有一個唯一的id,然後是另一個表所在的表?
要完成此查詢,使用union all
:
select
'Table1' as TableName,
*
from
Table1
union all
select
'Table2',
*
from
Table2
union all
select
'Table3',
*
from
Table3
...等等
爲了更好的數據庫設計,你想要麼有一個表所有在它的行,以及一個指定的狀態表,在這裏您可以將StatusID列鏈接到指定給定行所處狀態的狀態列表。流程中每個階段的表格設計不佳,並且只會導致嚴重的頭痛。
如果你不能重新組織表格,以便你只有一個包含所有行和標記的過程中的標記,我會去做一個UNION
-approach。即:
SELECT 'Data from Table 1', t1.field1, ...
FROM Table1 t1
UNION
SELECT 'Data from Table 2', t2.field1, ...
FROM Table2 t2
UNION
(Table3, 4, 5 and 6 in the same manner)
....
這樣你就可以看到數據源自哪裏,並且一次獲得全部6個數據。請記住,您必須在UNION
的所有部分都有完全相同的字段列表。
您可以創建一個代碼生成器來生成SQL語句來查詢6個表。生成器將創建6個選擇的UNION,併爲每個選擇添加一個「表」列,其中的常量值等於查詢的表的名稱。這會使得編寫語句變得容易,但我不會說編寫生成器會是。 「
」創建另一個表來定義所有行的位置,有一個唯一的ID,然後是另一個表所在的位置?是的,這是一種經典的設計模式。 – Interrobang 2011-12-28 21:22:14
在那裏。祝你好運,你需要它。 – 2011-12-28 21:22:28