2016-02-03 2 views
-1

Я действительно новичок, когда дело доходит до программирования. Я работал с веб-приложением, написанным на C# MVC5. Я использую MSSQL для своей базы данных и некоторых моделей программирования, таких как Linq и Entity Framework.MSSQL Как объединить строки в одну таблицу

На что мне теперь нужно работать, это объединение строк в одной таблице с одинаковым содержимым.

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

стол contact_type

[socialId][socialName][webUrlTemplate]
стол rated_merge
[mergeId][timestamp][ratedId]

стол рейтинг *

[ratedId][fname][lname][mergeId][ratings]
таблица ** rated_contact
[id][ratedId][socialId][value]

У меня есть форма, в которой пользователь может ввести свою социальную сеть/имя сайта/имя пользователя сайта/id, в котором подано, содержимое формы будет сохранено в таблицах , оцененных и Rated_contact.

после отправки формы, он будет проверять первый, если форма соответствия записей в рейтингу и rated_contact таблиц. Если нет соответствующих записей, содержимое формы будет сохранено как новая запись.

Но если есть совпадение, это произойдет, когда произойдет слияние (соответствие происходит только тогда, когда система определяет, совпадает ли имя пользователя из числа, совпадающего с любым именем пользователя в базе данных). Соответствующие строки будут сравниваться, будет создана новая запись, содержащая все различия и совпадения из сравниваемых строк. Затем предыдущие записи будут отмечены как удаленные. Эта новая запись заполнит профиль человека, оцененного.

После создания слияния столбец [ratedId] из таблицы rated_contact будет обновлен до [ratedId] из вновь созданной объединенной записи. Затем с таблицей rated_merge мне нужно вставить новую запись, содержащую [timestamp], [ratedId] и [mergeId], которая является полем автоматического увеличения.

Мне нужно получить [mergeId] и обновить столбец [mergeId] в таблице с рейтингом для всех соответствующих записей.

Любое предложение о том, какой подход следует делать?

Спасибо, ребята.

+0

у вас есть какие-либо общий идентификатор? который однозначно идентифицирует пользователя iirelook того, что пользователь предоставил твиттер, facebook id? – Viru

+0

Я должен спросить, почему эти «дублированные» строки существуют в первую очередь? Как они вставляются в базу данных в первом случае – Takarii

+0

@Viru да, каждое имя имеет соответствующий userId в качестве первичного ключа. –

ответ

-1

Вы можете использовать этот запрос

select fullname,max(facebook_id) facebook_id,max(twitter_id)twitter_id,max(insta_id)insta_id from member group by fullname 
+1

. Полное имя не уникально. – Viru

-1
insert into table_to_insert 
([fullname],[facebook_id],[twitter_id],[insta_id]) 
select [fullname],isnull(t1.[facebook_id],t2.[facebook_id]),isnull(t1.[twitter_id],t2.[twitter_id]),isnull(t1.[insta_id],t2.[insta_id]) 
from tablesource1 t1 
inner join 
tablesource2 t2 
on t1.fullname=t2.fullanme 

Может быть, это поможет вам

+1

Как вы пришли к выводу, что полное имя уникально? – Viru

+0

Поскольку в вашей таблице не было идентификатора, так что в этом случае ваш пример говорит, что имя - это точка, к которой вы хотите присоединиться, и записать id-s в имя. Поэтому просьбы указывают, как вы думаете, что он будет работать с уникальным идентификатором? –

+0

Прежде всего. Я не задавал этот вопрос..Проверьте комментарии к вопросу ... Я спросил, если есть уникальный идентификатор, и он упомянул, что существует уникальный идентификатор пользователя .... так что вы также должны были уточнить с пользователем перед отправкой неверного ответа – Viru

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