我在WordPress数据库中有两个自定义表.
table1:
id | title | etc
table2:
id | table1_id | title | source | etc
我有这个左连接工作完美:
select p.title as ptitle, e.id, e.title, e.source, e.etc
FROM table2 AS e
LEFT JOIN table1 AS p
ON p.id = e.table1_id
where e.table1_id = 1
返回这个:
ptitle1 | id1 |title1 | source1 | etc1
ptitle1 | id2 |title2 | source2 | etc2
ptitle1 | id3 |title3 | source3 | etc3
有没有办法省略如此多的ptitle重复?像这样的东西:
ptitle1 | { (id1 |title1 | source1 | etc1), (id2 |title2 | source2 | etc2), (id3...) }
ptitle2 | { null }
最佳答案 更新v.2
我已经更改了查询以反映LEFT JOIN顺序的变化以及显示对象{ptitle,array(null)}情况 – 您需要的数据位于new_col列中:
select
p.title as ptitle,
CONCAT('object { ', p.title, ', array( ', IFNULL(GROUP_CONCAT(CONCAT('array(', e.id, ' | ', e.title, ' | ', e.source, ' | ', e.etc, ')') SEPARATOR ', '), 'null'), ' ) }') AS new_col
FROM
table1 AS p
LEFT JOIN table2 AS e
ON p.id = e.table1_id
where
p.id = 1
GROUP BY
p.title
响应你的评论,new_col是一个字符串,我认为你需要它在这个表单中,因为你将在这个文本上应用一个解析器来解释它并为你返回适当的对象.
对于这种情况,我认为你必须更密切地描述情况,因为你需要这种特定形式的结果的确切原因可能在wordpress api中有某种例外用法 – 我不确定这是100%.