将一条记录转换为结果集的多个记录

时间:2012-09-11 19:23:57

标签: mysql

我正在为直接连接到数据库服务器的服务器应用程序创建MySQL视图。我不喜欢应用程序架构的方式,所以我选择了自己的结构。最初,我打算使用数据来创建静态配置文件,但这不再是一种选择。

无论如何,我将使用不同表中的几行来创建此视图。表A与视图之间存在1:多关系,表B之间存在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      |
+-------------------------------------+

我甚至不确定是否有这个名字(或者甚至可能),但是任何帮助都可以开始使用。

1 个答案:

答案 0 :(得分: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

你应该拥有自己想要的东西。