Как написать SQL-запрос к этому? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть две таблицы с именами dbo.name и dbo.class.

name

       Name id
        A   1   
        B   2
        C   3
        D   4

class

     Id     mainid
     1
     2

Здесь мне нужно заполнить mainid, отображая таблицы, что означает, что D является основным именем и имеет идентификатор 4это должно стать mainid в dbo.class.Я должен получить 4 в первом ряду.Если c - другое основное имя, я должен получить идентификатор c в качестве mainid во 2-й строке.

      2           3

как мне написать запрос для этого? Пожалуйста, помогите написать запрос для этого.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Пока вы не сможете четко объяснить с помощью связного примера, это лучшее, что вы можете получить:

SELECT
 dbo.name.id, dbo.class.mainid
FROM
 dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id

И вставить это в новую таблицу:

CREATE TABLE dbo.newtable 
SELECT
     dbo.name.id, dbo.class.mainid
    FROM
     dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id
0 голосов
/ 08 февраля 2012

Не уверен, что я точно понимаю вопрос. Если таблица классов пуста и вы просто хотите заполнить ее из таблицы имен; попробуйте это:

insert into class (mainid)
select id from name

Но я не уверен, что полностью понимаю ваш вопрос. Я думаю, что мне нужно немного больше информации. Например, почему вам нужен D, чтобы быть первым? Таблица классов пуста, и вам просто нужно загрузить ее с данными из имени? Или в таблице классов уже есть данные?

Если таблица классов пуста, вы можете просто запустить sql, который я опубликовал выше, чтобы загрузить ее из таблицы имен. Нет необходимости «сопоставлять» две таблицы вместе. Однако, если в таблице классов уже есть данные и вы не хотите ничего дублировать, вам нужно выполнить что-то вроде следующего:

insert into class (mainid)
select id from name N
where N.id not in 
    (select distinct (C.mainid) from class C)

или лучший способ сделать это:

insert into class (mainid)
select id from name N
where not exists (select 1 from class C where N.id = C.mainid) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...