1

Joomla の Joomfish MySQL データベース テーブルから翻訳されたコンテンツをエクスポートしようとしています。

Joomfish が機能する方法は、フィールドを個別に変換し、それらを jos_content テーブルからの元のソース コンテンツへの参照 ID とともに jos_jf_content テーブルに格納することです。たとえば、ある行には翻訳されたタイトル、別の行には翻訳されたカテゴリ、別の行には全文コンテンツが含まれる場合があります。これらの行は別々であり、reference_id 値のみを共有します。

したがって、関心のある列がある jos_jf_content テーブルがあります。

reference_id (ソースの ID) | reference_field (タイトル|フルテキスト|メタデスク) | 値 (翻訳)

同じ 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 に答える