2015-07-03 3 views
0

У меня есть следующие таблицы, Table1Добавление данных из нескольких столбцов из разных таблиц

ID1  ID2 Count1 Count2 Count3 
aaaaa bbbbb 1  1  0 
ccccc dddd 2  2  0 
eeee fffff 3  3  0 
gggg hhhh 4  4  0 

и TABLE2

ID1  ID2 Count1 Count2 Count3 
bbbbb aaaaa 5  5 5 
dddd ccccc 4  4 4 
fffff eeee 3  3 3 
aaaaaa gggg 2  2 2 

Теперь я хочу, чтобы добавить count1 и count3 и назвать его новым count4 и условие: table1.id1 = table2.id2 и table2.id1 = table1.id2.

Я знаю, что случай, когда должен использоваться, но я не уверен в соединении.

Финальный стол должен быть, как этот

ID1  ID2 Count4 Count2 Count3 
aaaaa bbbbb 6  1 0 
ccccc dddd 6  2 0 
eeee fffff 6  3 0 
gggg hhhh 4  4 0 

Там могут быть и другие строки и чьи count3> 0 в таблице 1

+0

нет строки в table1 которых count3> 0 –

+0

Это только часть стола. могут быть некоторые другие строки tooo – Morpheus

+0

, то почему ваши выходные данные показывают строки с count3 = 0 –

ответ

0

Вы должны использовать INNER JOIN, чтобы соединить эти две таблицы и использовать арифметические операции в выполнить сумму:

SELECT (t1.count1 + t2.count3) AS count4, t1.count1, t1.count3 ОТ table1, как t1 INNER JOIN t2 table2 как ГДЕ t1.id2 = t2.id

Ссылки: https://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html и: https://dev.mysql.com/doc/refman/5.0/en/join.html

0

Сумма count1 в зависимости от Идентификаторы немного сложнее в этом случае, так что вам, возможно, придется сначала получить счет с использованием LEFT JOIN и группы по и наконец, сделать объединение table1 в результате чего-то, как

select 
t1.ID1, 
t1.ID2, 
coalesce(x.Count1,t1.Count1) as Count4, 
t1.Count2, 
t1.Count3 
from table1 t1 
left join (
    select 
    x1.ID1, 
    sum(x1.Count1+x2.Count1) as Count1 
    from table1 x1 
    left join Table2 x2 on x1.ID1 = x2.ID2 and x1.ID2=x2.ID1 
    group by x1.ID1 
)x on x.ID1 = t1.ID1 

http://sqlfiddle.com/#!9/c0c6d/3

Смежные вопросы