2012-09-11 120 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

这正是我想要的!非常感谢!像魅力一样工作。 –