0

ベース値のリストと言語値のリストを持つクエリがあります。各値には、互いに一致するキーがあります。ベース値は 1 つのテーブルに格納され、言語値は別のテーブルに格納されます。私の問題は、1 つを除いて、一致するすべての基本値を QUERY から削除する必要があることです。次に、そのクエリを Excel スプレッドシートにエクスポートし (この部分は問題なく実行できます)、ユーザーが言語の値を編集できるようにします。

ユーザーが新しい言語値を編集および/または挿入すると、データベース内の一致する値 (最初に削除された値など) を上書きすることを除いて、データベースを更新する必要があります。

簡単に言えば、クライアントは翻訳の費用を負担します。必要な翻訳が少ないシート (頻繁に再表示されるフレーズなど) を生成できれば、クライアントはお金を節約できるため、プロジェクトを開始することになります。欠点は、一致するすべての値がすべて言語テーブルの 1 つの行に属している真のリンク リストではないことです (これは簡単でした)。代わりに、上記のように更新する必要がある同一の値が複数あります。


ええ、私はそれについて混乱しているので、少し曖昧に見えるかもしれません. サンプルは次のとおりです。

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (blank)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
*blank*

望ましい結果 (照会された場合)

表 1 アイテムの説明 1 アイテムの説明 2 アイテムの説明 3 アイテムの説明 4 アイテムの説明 5 アイテムの説明 6

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3 (filled by matching row in Table 2)
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6 (blank, returned as empty string)

ユーザーは、空白行 (言語の行 6 など) にデータを挿入するなどの変更を行ってから、再アップロードします。

Table 1
Item Description1
Item Description2
Item Description3
Item Description2
Item Description2
Item Description4
Item Description5
Item Description6
Item Description3

Table 2
Item Desc in other Language1
Item Desc in other Language2
Item Desc in other Language3  (now matches row below)
Item Desc in other Language3
Item Desc in other Language4
Item Desc in other Language5
Item Desc in other Language6  (new value entered by user)

各「アイテムの説明」を単一の「他の言語のアイテムの説明」に一致させるリソース キーもあります。両者がお互いに会うのはこの翻訳プロセス中だけであり、それ以外の場合はすべて値が異なる可能性があるため、リソース キーを単純に 1 つの翻訳ですべてのポイントに永続的に変更することはできません。

また、テーブルの構造を変更したり、テーブルの行を削除したりしてはいけません。


わかりました、これは私がクエリでやりたいことの更新された改訂ですが、実際には結合されたテーブルの値が必要なので、明らかにそうしません:

SELECT pe.prodtree_element_name_l, rs.resource_value, pe.prodtree_element_name_l_rk   
FROM prodtree_element pe
        LEFT JOIN resource_shortstrings rs
            ON pe.prodtree_element_name_l_rk = rs.resource_key
        WHERE rs.language_id = '5'
            AND pe.prodtree_element_name_l <> ''
        GROUP BY pe.prodtree_element_name_l
4

3 に答える 3

1

うーん、問題が本当に何であるかについてはまだ明確ではありませんが、試してみましょう.

テーブル:

BASE_VALUES
------------------
BASE_VALUE_RK
BASE_VALUE_NAME

RESOURCE_VALUES (これらは翻訳です、私は推測しています)
-----------------------
RESOURCE_KEY
RESOURCE_LANGUAGE_ID
RESOURCE_VALUE

1 つの基本値と、その基本値に一致するすべての対応する翻訳値を取得し、それらを Excel にエクスポートしてから、更新によって再読み込みします (私はそう思います)。

データを選択する SQL:

SELECT bv.BASE_VALUE_RK、rv.RESOURVE_VALUE
  FROM BASE_VALUE bv、RESOURCE_VALUE rv
 WHERE bv.BASE_VALUE_RK = rv.RESOURCE_KEY
   AND rv.resource_language_id = '5'
 ORDER BY 1;

それはあなたに与えるでしょう:

1234 フー
1235 バー
1236 バズ

それをExcelにエクスポートし、更新して元に戻します:

1234 グー
1235 車
1236 スパス

次に、次のように言うことができます。

RESOURCE_VALUES を更新
   SET RESOURCE_VALUE = value_from_spreadsheet
 WHERE RESOURCE_KEY = key_from_spreadsheet

私はこの男のベースから大きく外れている可能性があるので、お知らせください。もう少し詳細を提供していただければ、マークに近づくことができるかもしれません.

乾杯!

于 2008-10-15T20:26:35.930 に答える
0

1 つを除いてすべての一致を削除する必要がある場合は、一致するすべての一致を削除しないでください...一致...より良い用語が必要です...そして正しいものを挿入してください。例えば、塩基対表の項目 12 と 13 の間の一致を更新する必要がある場合は、次のようにします。

delete from matchtable where (id1 = 12 and id2 = 13) or (id1 = 13 and id2 = 13);
insert into matchtable (id1, id2) values (12, 13);

単純化しすぎているかもしれませんが、あなたの説明はところどころ漠然としています。

于 2008-10-15T18:09:30.590 に答える
0

ねえ、その更新をありがとう!

それを見て、それを以前の投稿に追加すると、最終的にこれを思いつきました:

<cfquery name="getRows" datasource="XXXX">
    SELECT pe.prodtree_element_name_l, MAX(rs.resource_value) AS resource_value
    FROM prodtree_element pe
    LEFT JOIN resource_shortstrings rs
        ON pe.prodtree_element_name_l_rk = rs.resource_key
    WHERE rs.language_id = '5'
        AND pe.prodtree_element_name_l <> ''
    GROUP BY prodtree_element_name_l
</cfquery>

特定の resource_value は必要なく、そこにあるものだけが必要であることに気付きました。また、クエリ以外ではリソース キーがまったく必要ないことにも気付きました。更新では、一致するすべての基本値が更新されるため、結局のところリソース キーは必要ありませんでした。これにより、GROUP BY を使用できました。

説明が下手で申し訳ありませんが、これで終わりです。:) 助けてくれてありがとう。

于 2008-10-15T20:59:03.773 に答える