У меня есть таблица tbl_english, содержащая столбец «word». У меня также есть таблица tbl_translation, содержащая столбцы «german_word» и «english_word».SQL - Обновление строк на основе справочных данных в таблице поиска
tbl_translation должен быть таблицей поиска, чтобы увидеть, если есть какие-либо немецкие слова в tbl_english»колонок„слово“
Так что я хочу сделать, это;
Для каждого tbl_english.word, перебирать tbl_translation.german_word и искать подходящее значение. Если матч существует, обновить tbl_english.word со значением в tbl_translation.english_word из текущей строки в tbl_translation
Намерения состоит в том, чтобы заменить любые несанкционированные немецкие слова, существующие в tbl_english с их правильным переводом из таблицы поиска tbl_translation
До сих пор я придумал это;
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 содержит (немецкий, английский); Mädchen, Женщина Frau, Женщина
So tbl_english Я хотел бы видеть следующий результат; Женского Женского Мальчик Жираф Baum
Edit: Не каждое слово в tbl_english будет иметь ссылочную строку в таблице перевода. Edit2: Добавлен пример
Возможно, вам следует показать пример. Если английское слово может иметь несколько германских эквивалентов, вам нужно определить, какой из них вы хотите, и, возможно, вы могли бы показать, как идентифицировать слово «изгоев». Это просто тот, который вообще не существует в tbl_translation? Что, если он есть, но есть перевод другого английского слова? –
Предположим, что несколько уникальных немецких слов могут быть переведены на одно английское слово. В одном уникальном немецком слове никогда не будет более одного перевода. Кроме того, единственный способ идентифицировать слово «изгоев» - это если он существует в tbl_translation – cc0
. Ваше редактирование не имеет смысла. Если слово в tbl_english не имеет строки в tbl_translation, какое немецкое слово вы выбираете? Самый смешной? Пожалуйста, покажите некоторые примеры данных. –