View Full Version : مقدار دهی به یک فیلد در رکورد های جدول به صورت عدد افزایشی
mostafa_shaeri_tj
جمعه 26 آبان 1391, 01:47 صبح
سلام.
یک جدول دارم که به این صورت هست :
id,type,no,name
این جدول حاوی 50000 رکورد هست. که فیلد no شماره یک جنس و فیلد type نوع یک جنس رو نشون میده.
در حال حاضر فیلد no رکوردها مقدار نداره. سوال اینجاست :
چطور میتونم به فیلد no ی رکورد هایی که type آنها 1 است مقدار بدم؟ خوب اینکه خیلی سادست! منظور من اینه که چطور مقداری که به رکورد اول میدم 10 و رکورد دوم 11 و ...! یعنی مقدار دهی به صورت افزایشی باشه
mohammadsafari
جمعه 26 آبان 1391, 13:01 عصر
میتونی یه کرسر ساده بنویسی در غالب یک Query که کارتو انجام بده
مثال های ساده وجود داره یه سرچ کنی پیدا می کنی
mostafa_shaeri_tj
جمعه 26 آبان 1391, 15:29 عصر
ممکنه یه مثال ساده بزنید.
من یه راهی که فکر میکنم خیلی هم استاندارد نیست پیدا کردم. یه کپی از جدول بگیرم و نوع فیلد ام رو auto incriment بگیرم و با یک insert و select تو در تو رکورد های مورد نظرم رو تو جدول جدید درج کنم . فیلدی هم که auto incriment تعریف کرئم خودش خودکار به ازای هر رکورد شماره میندازه
Reza_Yarahmadi
شنبه 27 آبان 1391, 09:59 صبح
چیزی که من از سوالتون فهمیدم اینه که شما میخواید به ازا هر Type فیلد No از یه مقدار خاصی بصورت افزایشی آپدیت بشه.
برای این مورد روشهای مختلفی وجود داره ، کد زیر در هر ورژن از SQL Server جواب میده
Declare @Tbl Table (ID int Identity(1, 1), Type int, NO int)
Insert Into @Tbl Values (1, Null)
Insert Into @Tbl Values (2, Null)
Insert Into @Tbl Values (3, Null)
Insert Into @Tbl Values (3, Null)
Insert Into @Tbl Values (2, Null)
Insert Into @Tbl Values (1, Null)
Insert Into @Tbl Values (1, Null)
Insert Into @Tbl Values (2, Null)
Insert Into @Tbl Values (2, Null)
Insert Into @Tbl Values (3, Null)
Insert Into @Tbl Values (3, Null)
Insert Into @Tbl Values (3, Null)
Insert Into @Tbl Values (1, Null)
Insert Into @Tbl Values (2, Null)
Update @Tbl Set
NO = Rank
From (
Select
Rank = Count(*)
,T1.ID
,T1.Type
From
@Tbl T1, @Tbl T2
Where
T1.ID >= T2.ID
AND
T1.Type = T2.Type
Group By
Type, ID) T
INNER JOIN @Tbl tbl
ON
T.ID = tbl.ID
Select * From @Tbl Order By Type, NO
Saeid59_m
دوشنبه 13 اردیبهشت 1395, 08:46 صبح
منم همین سوال رو دارم لطفا راهنمائی کنید
فرض کنید یه جدول با سه فیلد a , b, c دارید با 5000 رکورد .
فیلد ها همه عددی هستند و فیلد a مقدار ندارد
حالا می خواهیم رکوردهایی از جدول که فیلد c اونها برابر 5 هست ، فیلد a اونها به صورت افزایشی شماره بخوره
Mahmood_M
دوشنبه 13 اردیبهشت 1395, 20:19 عصر
منم همین سوال رو دارم لطفا راهنمائی کنید
فرض کنید یه جدول با سه فیلد a , b, c دارید با 5000 رکورد .
فیلد ها همه عددی هستند و فیلد a مقدار ندارد
حالا می خواهیم رکوردهایی از جدول که فیلد c اونها برابر 5 هست ، فیلد a اونها به صورت افزایشی شماره بخوره
یک متغیر تعریف کنید و به صورت زیر درون Update ازش استفاده کنید :
DECLARE @AValue INT
SET @AValue = 0
UPDATE MyTable SET @AValue = A = @AValue + 1 Where C = 5
* اگر SQL Server 2008 استفاده می کنید می تونید مقدار اولیه بدید به متغیر :
DECLARE @AValue INT = 0
UPDATE MyTable SET @AValue = A = @AValue + 1 Where C = 5
با تغییر مقدار "1" می تونید گام افزایش رو تغییر بدید ...
Saeid59_m
دوشنبه 20 اردیبهشت 1395, 22:11 عصر
مرسی از پاسختون
حالا اگه بخوام جدول بر اساس یه ستون خاص مرتب بشه و بعد این شماره گذاری انجام بشه چطور ؟
Mahmood_M
سه شنبه 21 اردیبهشت 1395, 16:08 عصر
مرسی از پاسختون
حالا اگه بخوام جدول بر اساس یه ستون خاص مرتب بشه و بعد این شماره گذاری انجام بشه چطور ؟
تست نکردم ولی با استفاده از CTE باید بشه :
DECLARE @AValue INT = 0;
WITH CTEList AS (SELECT * FROM MyTable WHERE C = 5
ORDER BY MyField DESC)
UPDATE CTEList SET @AValue = A = @AValue + 1;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.