PDA

View Full Version : سوال: پیدا کردن شماره های تکراری ، همراه با تعیین وضعیت یک فیلد



S_O_S1982
سه شنبه 15 دی 1388, 08:43 صبح
سلام دوستان
اگه سوالم تکراری هست ، عذر خواهی می کنم

من می خواستم شماره های تکراری مربوط به یک فیلد رو در یک جدول انتخاب کنم ، برای انجام این کار هم مشکلی ندارم ، اما جایی که مشکل دارم اینه که می خوام برای پیدا کردن شماره های تکراری ، یک فیلد دیگه هم دخالت بدم و وقتی که مقدار اون فیلد برای شماره های تکراری یکی بود ، اون شماره ها رو نشون بده و اگه یکی نبود این کار رو نکنه

query که برای این کار نوشتم این هستش



)select id,nid1,strtitle,Tm from table1 where nid1 in
select nid1
from table1
where nid1<>0
group by nid1
having (count(*)>1)
(
order by nid1



این کد برای من nid1 های که بیشتر از یک بار تکرار شدن رو بر می گردونه ، اما من میخوام علاوه بر فیلد tm رو برای nid1 های تکرار شده مقایسه کنه و اگه فیلد tm مقدارش یکی بود ، در اون صورت اون موارد تکراری و بهم نشون بده و اگه مقدار فیلد Tm یکی نبود ، که هیچی ...


ممنون از توجه شما

Hamid.Kad
سه شنبه 15 دی 1388, 11:30 صبح
اما من میخوام علاوه بر فیلد tm رو برای nid1 های تکرار شده مقایسه کنه و اگه فیلد tm مقدارش یکی بود ، در اون صورت اون موارد تکراری و بهم نشون بده و اگه مقدار فیلد Tm یکی نبود ، که هیچی ...
منظورتون از اینکه فرمودید مقدارش یکی بود، یعنی مقدارش با فیلد Tm برابر بود ؟ (با Tm کدوم سطرها؟ همه اونهایی که مقدار nid1 شون برابر هست؟)

S_O_S1982
سه شنبه 15 دی 1388, 16:45 عصر
منظورتون از اینکه فرمودید مقدارش یکی بود، یعنی مقدارش با فیلد Tm برابر بود ؟ (با Tm کدوم سطرها؟ همه اونهایی که مقدار nid1 شون برابر هست؟)

ببنید من شاید بد توضیح دادم
من الان می خوام رکوردهایی از جدول که مقدار فیلد nid1 آنها ، بیشتر از یک بار در جدول تکرار شده و مقدار فیلد Tm انها برابر است نمایش داده بشه

فرض کنیم داده های ما تو جدول به شکل زیر هستن


nid1----- tm
------ -------
1------ 123
2 ------123
2------ 165
2 ------165


در واقع من می خوام شرطی و به اون query بالا اضافه کنم که نتیجش در مورد داده هایی که مثال زدم نمایش 165 به خاطر تکراری بودن فیلد nid1 و یکسان بودن مقدار فیلد tm بشه و 122 رو با اینکه مقدار nid1 تکراری هست اما به خاطر اینکه مقدار فیلد tm با هم یکی نیست و نشون نده

محمد سلیم آبادی
سه شنبه 15 دی 1388, 17:19 عصر
select *
from table_1 as t1
where (select COUNT(*)
from table_1 as t2
where t1.nid1 = t2.nid2) > 1
and (select MIN(Tm)-MAX(Tm)
from table_1 as t2
where t1.nid1 = t2.nid1) = 0