2012-09-11 168 views
1

我正在爲直接連接到數據庫服務器的服務器應用程序創建MySQL視圖。我不喜歡應用程序模式的方式,所以我使用自己的結構。最初,我打算使用這些數據來創建靜態配置文件,但這不再是一個選項。將一條記錄轉換爲結果集的多條記錄

無論如何,我將使用來自不同表格的多行創建此視圖。表A和視圖之間存在1:1的關係,表B與表1之間存在1:1的關係。這是1:很多將我拋棄的關係。

在表A中,我有以下:

 
+--------------------------------+ 
| id | name | timeout | any | 
+--------------------------------+ 
| 1 | Main | 10 | 1 | 
+--------------------------------+ 

在表B中,我有以下:

 
+-------------------+ 
| id | a_id | route | 
+-------------------+ 
| 1 | 1 | 123 | 
+-------------------+ 
| 2 | 1 | 321 | 
+-------------------+ 

對於圖中,兩個表將被連接,像這樣:

 
+-------------------------------------+ 
| name | app |  data  | 
+-------------------------------------+ 
| Main | timeout |  10  | 
+-------------------------------------+ 
| Main | dialany |  1  | 
+-------------------------------------+ 
| Main | routeto |  321  | 
+-------------------------------------+ 
| Main | routeto |  123  | 
+-------------------------------------+ 

我甚至不確定是否有這個名稱(或者甚至可能),但任何幫助開始將是f antastic。

+1

'app'字段來自哪裏? –

+1

這是什麼問題? – RedFilter

回答

0

你會使用一個UNION從第一臺獲得各行,像這樣:

SELECT name, 'timeout' as app, timeout FROM A WHERE id = 1 
UNION SELECT name, 'dialany' as app, `any` FROM A WHERE id = 1 

然後在其他表UNION

UNION SELECT A.name, 'routeto' as app, B.data FROM A 
    JOIN B ON A.id = B.a_id 
    WHERE A.id = 1 

而且你應該有你想要什麼。

+0

這正是我想要的!非常感謝!像魅力一樣工作。 –