2009-08-17 2 views
1

У меня есть следующие таблицы:Опорный ток строки

TableA 

ID | SomeInt 
1  55 
1  66 
2  77 

TableB 

ID | OtherInt 
1 ComputedBy Field 
2 ComputedBy Field 

Вычисленное полем должен вернуть сумму от TableA, где TableB.ID = TableA.ID, но если я сказать:

SELECT SUM(SomeInt) from TableA where ID = TableA.Id 

, где первый идентификатор будет идентификатором текущей таблицы, dbms говорит «Неоднозначное имя поля между таблицей Table1 и Table2»

Итак, как мне получить идентификатор из текущей строки, чтобы он не смешивал имя поля.

Что-то вроде This.ID, Self.ID, CurrentRow.ID или любой SQL использует

EDIT: Видимо, я мог бы использовать имя текущей таблицы, чтобы ссылаться на столбец

ответ

3

Простой ответ

select tb.id 
     ,sum(ta.someint) 
    from TableA ta 
     inner join TableB tb 
       on ta.id = tb.id 
group by tb.id 

Это полностью разработанный пример вашей проблемы извините синтаксис tsql.

declare @TableA table(id int 
         ,someint int) 

insert @TableA values(1,55) 
insert @TableA values(1,66) 
insert @TableA values(2,77) 

declare @TableB table(id int) 

insert @TableB values(1) 

select tb.id 
     ,sum(ta.someint) 
    from @TableA ta 
     inner join @TableB tb 
       on ta.id = tb.id 
group by tb.id 
0
SELECT B.ID, SUM(A.SomeInt) AS Total 
From TableA A, TableB B where A.ID = B.Id 
GROUP BY B.ID 
+0

-1 для A, B присоединиться синтаксис –

+0

@Joel: Я не мог удержаться от смеха. Хотя я не занижен, почему вы думаете, что я должен получить -1? Является ли этот синтаксис несовместимым между БД? – shahkalpesh

0

SELECT TableB.ID, SUM(TableA.SomeInt) 
    FROM TableB 
     LEFT OUTER JOIN TableA ON 
      TableB.ID = TableA.ID 
    GROUP BY TableB.ID 

0

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

E.G.

  • Обновление ж/группы по
  • Вставка
  • Trigger, который обновляет TableB на основе изменений TABLEA
  • Простой выбор ...

Позвольте мне знать, что ваша цель и мы можем получить идеальный ответ.

0

Вы могли бы просто сделать "TableB" сам вычисляемый вид:

CREATE VIEW TableB AS SELECT ID, SUM(SomeInt) AS OtherInt FROM TableA; 

SELECT * FROM TableB; 
id | otherint 
----+---------- 
    2 |  77 
    1 |  121 
(2 rows) 
Смежные вопросы