Оператор SQL Server Select, который может обновлять связанные записи - PullRequest
1 голос
/ 05 мая 2011

Привет всем и спасибо за просмотр.

У меня есть веб-форма, которая подключается к базе данных SQL Server 2005.Помимо представления плоских данных, я использую два оператора выбора.Первый заполняет раскрывающийся список с именами других пользователей из базы данных.

SELECT Firstname + ' ' + LastName
FROM KB_XMod_Modules 
WHERE FormID=3

Это нормально, но мне также нужно обновить записи других пользователей, чтобы они отображались, когда они были выбраны текущим профилем.Думайте об этом как «Джон любит Пола», и в записи Пола должно быть указано «Пол любит Джона».

Я боролся, и самое близкое, что у меня есть, это второе утверждение в форме...

SELECT Firstname + ' ' + LastName
FROM KB_XMod_Modules 
WHERE LikedByID = 'Current Record ID'

Такого рода работы, но проблема в том, что в записи «Пола» не будет отображаться, что ему «нравится Джон», пока я не открою и не сохраню запись Пола.Я собираюсь работать с несколькими сотнями записей, так что это нельзя сделать вручную.Мне нужен способ непосредственного обновления Пола, когда я сохраняю Джона.

В идеале я думаю, что хотел бы добавить UPDATE к первому утверждению, которое заполняет раскрывающийся список именами пользователей, но также и обновлениями.соответствующая запись о подаче, но не думаю, что это возможно.

Я просто вхожу в SQL и затрудняюсь найти лучший способ сделать это ...

Еще раз спасибо.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Подумайте, есть ли в вашем выпадающем списке идентификатор:

  SELECT Firstname + ' ' + LastName AS FullName, ID
  FROM KB_XMod_Modules WHERE FormID=3

Ваш выпадающий список может вспомнить, на каком человеке вы находитесь:

 <asp:DropDownList DataTextField="FullName" DataValueField="ID" ..... />

Давайте представим, что Пол любит Джона. Когда вы сохраняете «лайк», вы можете:

 UPDATE KB_XMod_Modules 
 SET LikedByID = IdFromYourDropDownSelectedValueForPaul
 WHERE ID = JohnID

Также подумайте, может ли человек понравиться более чем одному человеку. В этом случае вам необходимо изменить структуру базы данных:

CREATE TABLES PersonLikes(
 PersonID  int,
 LikedBy   int)

Тогда вам нужно будет только:

INSERT INTO PersonLikes(PersonID,LikedBy) VALUES(@PaulID, @JohnID)
0 голосов
/ 05 мая 2011
SELECT u.Firstname + ' ' + u.LastName as UserName, l.FirstName + ' ' + l.LastName as LikedByName
FROM KB_XMod_Modules as u
  join KB_XMod_Modules as l on l.LikedById = u.FormId
WHERE u.FormID=3

Это объединит ваши 2 запроса в один, где FormId совпадает с LikedByIdЕсли вы снимите WHERE u.FormID=3, он покажет все записи, которые нравятся всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...