SQL Update Query - Обратная ссылка - PullRequest
0 голосов
/ 08 июля 2011

Я новичок в SQL, так что это не слишком сложно.

У меня есть две таблицы, в настоящее время не реализовано ограничение внешнего ключа:

 Table Foo
============
ID  |  BarID
------------
1   |  NULL
2   |  NULL
3   |  NULL

и

 Table Bar
============
ID  |  FooID
------------
101 |  1
102 |  2
103 |  3

Как видите, строки таблицы Баров знают, с какими Foos они связаны, но строки таблицы Foo не знают, с какими Барами они связаны. Я хочу изменить это, поэтому я получаю:

 Table Foo
============
ID  |  BarID
------------
1   |  101
2   |  102
3   |  103

Я хочу запрос SQL, который установит Te BarID в таблице Foo.В псевдокоде:

for each Foo in FooTable:
  Bar = select Bar from BarTable where Bar.FooID == Foo.ID
  set Foo.BarID = Bar.ID
  set Bar.FooID = NULL

Спасибо

РЕДАКТИРОВАТЬ: Я использую Microsoft SQL Server 2008

Ответы [ 4 ]

1 голос
/ 08 июля 2011
UPDATE Foo 
JOIN Bar ON Bar.FooID = Foo.ID
SET Foo.BarID = Bar.ID

Это должно сделать это

1 голос
/ 08 июля 2011
UPDATE Foo SET BarId=(SELECT Id FROM BAR WHERE Fooid=foo.id)
1 голос
/ 08 июля 2011
update foo set
BarID = (select ID from Bar where FooId = Foo.ID);

Кажется, вы хотите очистить ссылки от Бар на Фу. Если так, сделайте это:

update Bar set FooID = null;
0 голосов
/ 08 июля 2011
UPDATE Foo
USING Bar
SET BarID=Bar.ID
WHERE Foo.ID = Bar.FooID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...