Соответствие значений в запросе двух таблиц (SQL и ColdFusion)

У меня есть запрос со списком базовых значений и списком языковых значений. У каждого значения есть ключ, совпадающий с другим. Базовые значения хранятся в одной таблице, а языковые значения - в другой. Моя проблема в том, что мне нужно удалить все совпадающие базовые значения из QUERY, кроме одного. Затем я экспортирую этот запрос в электронную таблицу Excel (я могу отлично справиться с этой частью) и разрешаю пользователю редактировать языковые значения.

Когда пользователь редактирует и / или вставляет новые языковые значения, мне нужно обновить базу данных, за исключением записи поверх любых совпадающих значений в базе данных (например, тех, которые были удалены в первый раз).

Проще говоря, клиент платит за переводы, и если я могу создать лист, в котором требуется меньше переводов (например, фразы, которые часто повторяются), то они могут сэкономить деньги, следовательно, и проект. Я понимаю, что недостатком является то, что это не настоящий связанный список, где все совпадающие значения принадлежат одной строке в языковой таблице (что было бы легко). Вместо этого существует несколько одинаковых значений, которые необходимо обновить, как описано выше.


Да, я запутался в этом, поэтому он может показаться немного расплывчатым. Вот образец:

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)

Существует также ключ ресурса, который сопоставляет каждое «Описание элемента» с одним «Описание элемента на другом языке». Единственный раз, когда они когда-либо видятся, - это во время этого процесса перевода, во всех остальных случаях значения могут быть разными, поэтому ключи ресурсов нельзя просто изменить на все точки в одном переводе навсегда.

Я также должен добавить, не должно быть никаких изменений структуры таблиц или удаления строк таблицы.


Хорошо, вот обновленный пересмотр того, что мне НРАВИТСЯ на выполнении запроса, но, очевидно, этого не происходит, поскольку мне действительно нужны значения объединенной таблицы:

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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
3 166
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вам нужно удалить все совпадения, кроме одного, почему бы не удалить все совпадения ... совпадения ... нам нужны лучшие термины ... а затем вставить правильный. Например, если вам нужно обновить совпадения между элементами 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);

Я могу излишне упрощать, но ваше описание местами кажется расплывчатым.

Хм, все еще не совсем ясно, в чем проблема, но позвольте мне попробовать.

Таблицы:

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

RESOURCE_VALUES (these are the translations, I'm guessing)
-----------------------
RESOURCE_KEY
RESOURCE_LANGUAGE_ID
RESOURCE_VALUE

Вы хотите получить одно базовое значение и все соответствующие значения перевода, которые соответствуют этому базовому значению, экспортировать их в 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    Foo
1235    Bar
1236    Baz

Экспортируйте это в Excel и получите обратно с обновлениями:

1234    Goo
1235    Car
1236    Spaz

Затем вы можете сказать:

UPDATE RESOURCE_VALUES
   SET RESOURCE_VALUE = value_from_spreadsheet
 WHERE RESOURCE_KEY = key_from_spreadsheet

Возможно, я не в восторге от этого парня, поэтому дайте мне знать, и, если вы можете предоставить немного более подробностей, я смогу набрать больше очков.

Ваше здоровье!

Ответ принят как подходящий

Привет, спасибо за это обновление!

Глядя на это и добавляя в предыдущий пост, я наконец пришел к следующему:

<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.

Прошло время, извините за плохое объяснение, но это все! :) Спасибо за помощь.

Другие вопросы по теме