2014-02-27 5 views
0

Мне было сложно сформулировать вопрос. Но я лучше опишу его Технически здесь.Зацикливание результата SQL QUERY из таблицы Temp и обновление другой таблицы на основе результатов SQL QUERY

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

-------------------------------------------------------------- 
UserID ROLE_NAME VALUE 
-------------------------------------------------------------- 
001  VALUE_Q xx 
002  VALUE_W xx 
003  VALUE_Q xx 
-------------------------------------------------------------- 

и любит Id, связанные с пользователем многих ко многим в seprate таблице как этот

-------------------------------------------------------------- 
LikeId Likes VALUE 
-------------------------------------------------------------- 
001  Code xx 
002  Fun xx 
003  Eat xx 
-------------------------------------------------------------- 

и, другую таблица который имеет отношение к таблице пользователей от многих до многих, имеет следующую информацию. Let Say UserToLikeingTable


UserToLikingID UserId LikeId 
-------------------------------------------------------------- 
01    001  001 
02    002  001 
03    002  002 
-------------------------------------------------------------- 

А, вот еще один стол, который держит UserId, непосредственно из UserTable

-------------------------------------------------------------- 
TESTTABLEID USER_ID VALUE 
-------------------------------------------------------------- 
001   001  100 
002   002  220 
003   003  400 
004   002  231 
-------------------------------------------------------------- 

И что я хочу, первый список из Пользователя Дублированный, которые разделяют один и тот же вкус, и я сделал это в # TempTable, как Follow

-------------------------------------------------------------- 
LikeID UserId VALUE 
-------------------------------------------------------------- 
001  001 100 
001  002 200 
002  003 400 
002  004 500 
003  005 211 
003  005 210 
-------------------------------------------------------------- 

теперь приходит мой вопрос ...

Я хочу, чтобы обновить все пользовательские, которые разделяют один и тот же LikeID из вышеизложенного #TempTable результат в TESTTABLE как Follow: My End Результат shoudl be like: Обновление UserId с LikeID для всех LikeID в предыдущем результате.


TESTTABLEID USER_ID VALUE 
-------------------------------------------------------------- 
001   001  100 
002   001  220 
003   002  400 
004   002  500 
-------------------------------------------------------------- 

Любая помощь очень много я appreacted? Как работать в цикле для обнуления значений?

Hint:

Update TestTable set UserId = #Temptable.LikeId 
FROM #Temptable 
where #Temptable.UserId = TestTable.UserId 

А что, если я должен обновить и удалить дубликаты UserId первый и sum значение Тир и хранить один репрезентативный LikeId для них?

вместо замены всего userId на LikeId вы суммируете стоимость и заменяете один LikeId?

ответ

2

Пожалуйста, используйте объединение в соответствии с reuirement и здесь SQL выглядит следующим образом:

Update TestTable set UserId = #Temptable.LikeId 
    from TestTable as test 
    inner join #Temptable on #Temptable.UserId = test.UserId 
Смежные вопросы