在使用WordPress的自定义表中是否有LEFT JOIN的替代方法?

时间:2014-12-30 23:28:32

标签: php mysql wordpress

我在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 }

1 个答案:

答案 0 :(得分:2)

更新v.2

我已更改查询以反映LEFT JOIN顺序中的更改并显示object { 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%。