私は、テーブル "tbl_english"に "word"という列を含んでいます。 "german_word"と "english_word"という列を含むテーブルtbl_translationもあります。SQL - ルックアップテーブルの参照データに基づいて行を更新する
tbl_translationは
は、だから私は何をしたいですtbl_englishのいずれかのドイツ語の単語」列 『言葉』があるかどうかを確認するためにルックアップテーブルをすることになっています。
各tbl_english.wordについて、 tbl_translation.german_wordまで繰り返し、一致する値を探します。試合 が存在する場合は、
意図がルックアップテーブルtbl_translation
から正しい訳でtbl_english内の既存の任意の不正なドイツ語の単語を置き換えることですtbl_translationに現在の行から tbl_translation.english_wordに値を持つtbl_english.wordを更新これまで私が思いついたのはこれです。
UPDATE tbl_english SET word =
(SELECT english_word FROM tbl_translation
WHERE tbl_english.word = german_word)
WHERE word IN
(SELECT german_word FROM tbl_translation
WHERE tbl_english.word = german_word)
ただし、最初のサブ選択の結果として同じまたは異なる単語が複数存在する場合、これは失敗します。問題を解決する簡単な方法はありますか?
例:
tbl_englishが含まれます。 Mädchenフラウ ボーイ キリンバウム
tbl_translationに含まれる(ドイツ語、英語)。 男性、女性 女性、女性
だからtbl_englishで私は次の結果を見たいと思います。 女性 女性 ボーイ キリン バウム
編集:tbl_english内のすべての単語が変換テーブルに参照行を持っているわけではありません。 Edit2:追加例
おそらく例を示す必要があります。英語の単語が複数のドイツ語の同等語を持つことができるなら、あなたはあなたが望むものを定義する必要があり、おそらくあなたは "不正な"単語を特定する方法を示すことができます。それはtbl_translationにはまったく存在しないのでしょうか?それはそこにあるが、別の英語の単語の翻訳は何ですか? –
複数のユニークなドイツ語を1つの英単語に翻訳できるとします。独特の独特のドイツ語は、複数の翻訳を持つことはありません。 また、「不正な」単語を特定する唯一の方法は、tbl_translationに存在する場合のみです。 – cc0
あなたの編集は意味をなさないものです。 tbl_englishの単語にtbl_translationの行がない場合は、どのドイツ語を選択しますか?面白いの?いくつかのサンプルデータを表示してください。 –