请原谅我的无知,但是有一种整洁的方法可以自动地将元值(按键设置为临时列)从一个表连接到另一个表吗?
表项目
ID(int)
title(varchar 255)
内容(longtext)
表元
ID(int)
item_id(int)
key(varchar 255)
价值(longtext)
理想情况下,我希望能够执行像
这样的通用查询
SELECT * FROM items
并将输出设为
item.ID item.title item.content metakey1 metakey2
1 Listing Title Listing content meta_val1 meta_val2
2 Another Title Listing content meta_val1 meta_val2
答案 0 :(得分:1)
您可以以XML格式存储数据,并使用MySQL XML Functions提取数据。
示例:
create table items (id int, title varchar(100), content longtext);
create table meta (id int, item_id int, metadata varchar(100));
insert into items values (1, 'test item1', 'some content');
insert into meta values (1, 1, '<key1>value1</key1><key2>value2</key2>');
select
i.id, i.title, i.content,
extractvalue(m.metadata, '//key1[$1]') as key1,
extractvalue(m.metadata, '//key2[$1]') as key2
from items i
inner join meta m on i.id = m.item_id;
+------+------------+--------------+--------+--------+
| id | title | content | key1 | key2 |
+------+------------+--------------+--------+--------+
| 1 | test item1 | some content | value1 | value2 |
+------+------------+--------------+--------+--------+
您可以创建名为items_with_metadata的视图,然后调用select * from items_with_metadata
以获得所需的输出。
答案 1 :(得分:0)