пытается создать столбец в одной таблице и установить его значение из другой таблицы - PullRequest
1 голос
/ 28 декабря 2011

Я попытался добавить новый столбец в таблицу в том же БД, затем я попытался скопировать новый столбец из столбца другой таблицы.

        ALTER TABLE [library].[dbo].[Member$]
        add  new_column1 float
        go
        update [library] .[dbo] .[Member$] 
        set new_column1  = select [library].[dbo].Category$ .Category  from  [library] .[dbo] .[Category$]  
        GO
    CREATE TABLE [dbo].[Category$](
        [CatID] [float] NULL,
        [Category] [nvarchar](255) NULL,
        [BooksLimit] [float] NULL,
        [Period] [float] NULL,
        [FinePerDay] [float] NULL
    ) ON [PRIMARY]

    GO

CREATE TABLE [dbo].[Member$](
    [Roll No] [float] NULL,
    [RollNo] [nvarchar](255) NULL,
    [Name] [nvarchar](255) NULL,
    [CatID] [nvarchar](255) NULL,
    [ExpiryDate] [datetime] NULL,
    [ExpiryReason] [nvarchar](255) NULL,
    [Session] [nvarchar](255) NULL,
    [new_column] [float] NULL,
    [new_column1] [float] NULL
) ON [PRIMARY]

но new_column1 по-прежнему равен нулю

есть несколько значений в категории, но номер строки в обоих не совпадает, это проблема, если да, то как я могу добиться этого?

1 Ответ

2 голосов
/ 28 декабря 2011

Попробуйте это:

ALTER TABLE [library].[dbo].[Member$] add new_column1 float 
go 
update [library] .[dbo] .[Member$] set 
  new_column1 = 
  (
    select TOP 1 [library].[dbo].[Category$].Category 
    from [library].[dbo].[Category$]
  )

НО

Таким образом, вы просто назначаете одно и то же значение всем строкам таблицы Member $, если вам нужны определенные настройкидля строки каждого члена $ - попробуйте установить правильную фильтрацию в подзапросе

select TOP 1 [library].[dbo].[Category$].Category 
from [library].[dbo].[Category$]
WHERE PLACE_YOUR_FILTER_HERE

следующим образом:

ALTER TABLE [library].[dbo].[Member$] add new_column1 float 
go 
update [library] .[dbo] .[Member$] set 
  new_column1 = 
  (
    select TOP 1 [library].[dbo].[Category$].Category 
    from [library].[dbo].[Category$]
    WHERE [library] .[dbo] .[Member$].CatId = [library].[dbo].[Category$].CatId
  )

НО, специальное примечание

Если вы хотите использовать ID для категории - лучше использовать для нее точный тип, например int - потому что семейство FLOAT не является точным и, следовательно, - сложнее сравнивать.

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