SQL оставил соединение на нескольких столбцах - PullRequest
0 голосов
/ 28 августа 2018

Я получил две таблицы, как показано ниже:

Первая таблица для хранения значений:

id | column1 | column2
-----------------------
1  | aaa     | xxx
1  | aaa     | yyy
1  | bbb     | zzz

Вторая таблица для хранения переведенных значений:

id | old      | new
-----------------------
1 | aaa       | ooo
1 | yyy       | ppp

и результат должен быть

id | column1 | column2
-----------------------
1  | ooo     | xxx
1  | ooo     | ppp
1  | bbb     | zzz

Есть ли способ заставить эту работу?

1 Ответ

0 голосов
/ 28 августа 2018

Столбец1 и Столбец2 должны быть соединены отдельно. Также следует использовать ISNULL или COALESCE, если нет соответствующего перевода. Ниже приведен пример (Fiddle: http://sqlfiddle.com/#!18/160f0/3/0)

CREATE TABLE ValuesTable (
    Column1 varchar(3),
    Column2 varchar(3)
);

INSERT INTO ValuesTable (Column1, Column2) VALUES
('aaa', 'xxx'), ('aaa', 'yyy'), ('bbb', 'zzz');

CREATE TABLE TranslationTable (
    Old varchar(3),
    New varchar(3)
);

INSERT INTO TranslationTable (Old, New) VALUES
('aaa', 'ooo'), ('yyy', 'ppp');

SELECT ISNULL(c1.New, Column1), ISNULL(c2.New, Column2) FROM ValuesTable 
LEFT JOIN TranslationTable c1 ON c1.Old = Column1
LEFT JOIN TranslationTable c2 ON c2.Old = Column2
...