PDA

View Full Version : تغییر جایگاه قرار گیری ستون ها



navidkhalilian
یک شنبه 28 اسفند 1390, 03:49 صبح
سلام دوستان خسته نباشید.
من یک جدول دارم که شامل سه ستون با نام های C1 و C2 و C3 میشه.
حالا می خوام داخل ساختار جدول جای این ستون ها رو با هم تغییر بدم مثلا جای ستون C3 را با C2 عوض کنم.ممنون میشم دوستان کمک کنند.
البته متذکر میشم من نمی خوام توی حالت نمایش این کارو انجام بدم می خوام ساختار جدول را تغییر بدم.(البته با دستورات SQL).
تشکر

mahan.2002
یک شنبه 28 اسفند 1390, 17:37 عصر
سلام
فکر میکنم دستی هم تفییر می کند. لازم به دستورات SQL نیست.با یه Drag & Drop ساده میشه این کارو کرد.

navidkhalilian
یک شنبه 28 اسفند 1390, 21:02 عصر
سلام
فکر میکنم دستی هم تفییر می کند. لازم به دستورات SQL نیست.با یه Drag & Drop ساده میشه این کارو کرد.

دوست عزیز میدونم دستی هم میشه اما من می خوام از طریق برنامه خودم اینکار رو انجام بدم.دوستان کسی تو این ضمینه کارنکره؟؟؟

omid_csh
چهارشنبه 02 فروردین 1391, 01:12 صبح
سلام
یه راه اینه که view ایجاد کنی ولی اگه بخوای بصورت فیزیکی جای ستون ها رو عوض کنی میتونی این کارو بکنی:

/* Original sample table with three fields */
CREATE TABLE [dbo].[TestTable](
[FIELD1] [nchar](10) NULL,
[FIELD2] [nchar](10) NULL,
[FIELD3] [nchar](10) NULL
) ON [PRIMARY]

/* The following script will make FIELD3 the first column */
CREATE TABLE dbo.Tmp_TestTable
(
FIELD3 nchar(10) NULL,
FIELD1 nchar(10) NULL,
FIELD2 nchar(10) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
EXEC('INSERT INTO dbo.Tmp_TestTable (FIELD3, FIELD1, FIELD2)
SELECT FIELD3, FIELD1, FIELD2 FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO

DROP TABLE dbo.TestTable
GO

EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT'
GO

مرجع http://stackoverflow.com/questions/797992/how-to-change-the-column-order-in-a-sql-server-compact-edition-table-schema

موفق باشی

navidkhalilian
چهارشنبه 02 فروردین 1391, 01:25 صبح
سلام
یه راه اینه که view ایجاد کنی ولی اگه بخوای بصورت فیزیکی جای ستون ها رو عوض کنی میتونی این کارو بکنی:

/* Original sample table with three fields */
CREATE TABLE [dbo].[TestTable](
[FIELD1] [nchar](10) NULL,
[FIELD2] [nchar](10) NULL,
[FIELD3] [nchar](10) NULL
) ON [PRIMARY]

/* The following script will make FIELD3 the first column */
CREATE TABLE dbo.Tmp_TestTable
(
FIELD3 nchar(10) NULL,
FIELD1 nchar(10) NULL,
FIELD2 nchar(10) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
EXEC('INSERT INTO dbo.Tmp_TestTable (FIELD3, FIELD1, FIELD2)
SELECT FIELD3, FIELD1, FIELD2 FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO

DROP TABLE dbo.TestTable
GO

EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT'
GO

مرجع http://stackoverflow.com/questions/797992/how-to-change-the-column-order-in-a-sql-server-compact-edition-table-schema

موفق باشی

سلام دوست عزیز.ممنون از راه حلی که ارائه دادید اما یه سوالی برام پیش اومده.شما با این کار دارید یه جدول میسازید و اطلاعات را بهش منطقل می کنید و بعد جدول قبلی رو حذف می کنید.آیا این کار برای جدولی با چند میلیون رکورد هم جواب میده؟؟ البته منظورم از جواب دادن اینه که عملیات زمان بری نمیشه؟تشکر

omid_csh
چهارشنبه 02 فروردین 1391, 10:16 صبح
سلام
حتما چنین عملیاتی با چند میلیون رکورد زمان بر خواهد بود، ولی برای جابجایی ستون ها راه دیگری وجود ندارد.
اگه اینکارو نیمیخوای بکنی، میتونی یه view ایجاد کنی با نام جدولت و اسم جدولتو هم یه چیز دیگه بذاری.

navidkhalilian
چهارشنبه 02 فروردین 1391, 19:46 عصر
سلام
حتما چنین عملیاتی با چند میلیون رکورد زمان بر خواهد بود، ولی برای جابجایی ستون ها راه دیگری وجود ندارد.
اگه اینکارو نیمیخوای بکنی، میتونی یه view ایجاد کنی با نام جدولت و اسم جدولتو هم یه چیز دیگه بذاری.

راه که وجود داره میشه از جداول سیستمی استفاده کرد ولی از sql 2005 به بعد امکان ویرایش جداول سیستمی برداشته شد.از دوستان کسی اطلاعی نداره تو sql 2012 چنین امکانی اضافه شده یا نه؟

navidkhalilian
پنج شنبه 03 فروردین 1391, 15:49 عصر
دوستان کسی راه حلی نداره؟