我有一种情况,我必须使用EAV表设计。
我有以下两张表。
节点
id name structure_id
1 name 1 7
2 name 2 7
属性
id node_id name value structure_id
1 1 firstname test 7
2 1 lastname test 7
3 2 firstname test 7
我有以下查询
SELECT n.*, GROUP_CONCAT( CONCAT_WS('||', a.name, a.value) ORDER BY a.name SEPARATOR ';;' ) as _attributes
FROM nodes n JOIN attributes a ON n.structure_id = a.structure_id where n.structure_id = 7
以上查询输出以下内容(仅一行)
id: 1
name: name 1
structure_id: 7
_attributes: firstname||test;;firstname||test;;firstname||test;;firstname||test;;lastname||test;;lastname||test
如何从节点表中输出两行及其属性的行?
答案 0 :(得分:2)
如果通过structure_id和node_id连接节点和属性表,您将获得所需的结果集。 期望的结果集:“来自节点表及其属性行”。
祝你好运答案 1 :(得分:1)
select n.id,n.name,n.structure_id,firstname,lastname from Nodes n
join (select node_id, a.value as firstname from Attributes a where a.name='firstname' ) matches1 on matches1.node_id = n.id
left join (select node_id, a.value as lastname from Attributes a where a.name='lastname' ) matches2 on matches2.node_id = n.id