2016-03-16 12 views
0

Я пытаюсь найти способ в postgres, чтобы сопоставить два столбца из одной из моих таблиц в один столбец в другой таблице, не избавляясь от первых столбцов таблиц. Я не могу объяснить это так хорошо, так вот примерSQL - сопоставление двух строк из нескольких столбцов в одной таблице с одной строкой в ​​другой таблице.

Table 1:      Table 2: 
col1 col2 col3   2col1 2col2 
1  A  B    A  13.1 
2  A  C    B  18.3 
3  B  C    C  21.7 
4  B  D    D  11.23 

Я хочу, чтобы вернуться в таблицу, где col2 и col3 могут оба матча к тому, что в 2col1, и заменить их ценности с тем, что в 2col2.

Так что результат будет:

Table 1: 
col1 col2 col3 
1  13.1 18.3 
2  13.1 21.7 
3  18.3 21.7 
4  18.3 11.23 
+0

Соедините таблицу 2 дважды один раз на col2 и один раз на col3; и удалите теги mysql и sql-server, если вы ищете решение postgresql. – maraca

ответ

3

Попробуйте это:

SELECT t1.col1, t2.2col2 AS col2, t3.2col2 AS col3 
FROM table1 AS t1 
LEFT JOIN table2 AS t2 ON t1.col2 = t2.2col1 
LEFT JOIN table2 AS t3 ON t1.col3 = t2.2col1 
1

Это может помочь вам. LEFT JOIN - ваш друг

SELECT 
    t1.col1, 
    t2.2col2, 
    t3.2col2 
FROM table1 
LEFT JOIN table2 AS t2 ON t1.col2 = t2.2col1 
LEFT JOIN table2 AS t3 ON t1.col3 = t3.2col1; 
Смежные вопросы