将一条记录转换为结果集的多条记录
问题描述:
我正在为直接连接到数据库服务器的服务器应用程序创建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。
答
你会使用一个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
这正是我想要的!非常感谢!像魅力一样工作。 –
'app'字段来自哪里? –
这是什么问题? – RedFilter