1

我正在尝试从 Joomla 的 Joomfish MySQL 数据库表中导出翻译的内容。

Joomfish 的工作方式是单独翻译字段并将它们存储在 jos_jf_content 表中,并带有指向 jos_content 表中原始源内容的引用 id。例如,一行可以保存翻译的标题,另一行保存翻译的类别,另一行保存全文内容。这些行是独立的,仅共享 reference_id 值。

所以有一个 jos_jf_content 表,其中感兴趣的列是:

reference_id(来源的id)| 参考字段(标题|全文|metadesc)| 价值(翻译)

我需要将共享相同 reference_id 的所有值组合成一行,其列是 Title、Fulltext、Metadesc 等。

有什么提示吗?

更新:

原表如下:

|reference_id|   reference_field |   value        |

        10          title               A title
        10          fulltext           Body of post

我需要将它(CSV 等)导出为:

|  ID    |  TITLE    |    FULLTEXT     | 

|  10    |   A Title |  Body of post  |
4

2 回答 2

1

你可以使用 Mysql GROUP_CONCAT() 所以你的查询可能看起来像

SELECT group_concat(column_name) FROM table where reference_id = 'rid'

假设用于保存这些信息的列名相同。如果没有,请粘贴您的表结构。如果它们存储在不同的列中,您也可以使用 concat 。

于 2012-06-08T18:26:05.380 回答
0

我认为以下查询符合目标。感谢 Bill Purchase 提供了类似情况的链接。(注意我最终只需要介绍而不是全文)

    SELECT DISTINCT jf.reference_id
   , t.value AS title
   , it.value AS introtext
   , mk.value AS metakey
   , md.value AS metadesc
FROM jos_jf_content AS jf
LEFT JOIN jos_jf_content AS t ON jf.reference_id = t.reference_id
  AND t.reference_field = 'title' AND t.reference_table='content'
LEFT JOIN jos_jf_content AS it ON jf.reference_id = it.reference_id
  AND it.reference_field = 'introtext' AND it.reference_table='content'
LEFT JOIN jos_jf_content AS mk ON jf.reference_id = mk.reference_id
  AND mk.reference_field = 'metakey' AND mk.reference_table='content'
LEFT JOIN jos_jf_content AS md ON jf.reference_id = md.reference_id
  AND md.reference_field = 'metadesc' AND md.reference_table='content'
WHERE jf.reference_table='content'
ORDER BY jf.reference_id
于 2012-06-09T17:30:30.410 回答