PDA

View Full Version : شمارش بدون در نظر گرفتن ردیفهای تکراری



علی اکبر
سه شنبه 20 مهر 1389, 09:08 صبح
دوستان سلام
کوری من بدین صورت است
select cod,sharh,(select count(*) from table2 where table1.cod=table2.cod) as tedad from table1
در این کوری تعداد رکوردهای برابر با تابل 1 را از تابل 2 استخراج می کند
اما در تابل 2 ردیفای تکراری با فیلد مثلا پرسنلی وجود دارد که می خواهم با عدم شمارش ویکی شدن انها تعداد برگردانده شود
کوری را به صورت زیر تغییر دادم اما نتیجه نداشت
select cod,sharh,(select distinct count(per) from table2 where table1.cod=table2.cod) as tedad from table1
ممنون می شوم کمک کنید

Reza_Yarahmadi
سه شنبه 20 مهر 1389, 11:36 صبح
ميتونيد اول يك جستجو بزنيد كه تكراري ها رو حذف كنه بعد روي اين جستجو محاسبات رو انجام بديد.
چيزي شبيه كد زير

with dis as(
Select Distinct
cod
,sharh
,per
From table2)

Select
d.Code
,d.Sharh
,Count(*) as CountPer
From dis d inner join table1 t
on d.Code = t.Code
AND
d.Sharh = t.Sharh
Group BY
d.Code
,d.Sharh

علی اکبر
سه شنبه 20 مهر 1389, 12:19 عصر
نشد دیگه
قرار نیست چیزی حذف بشه
وتکراریها مورد نیاز می باشد اما در محاسبات دیده شود

Reza_Yarahmadi
سه شنبه 20 مهر 1389, 12:45 عصر
اگر لطف كنيد و ساختار 2 جدول به اضافه يك مثال براي كوئري كه ميخوايد ، اينجا بذاريد بهتر ميشه كمكتون كرد.

s.Jabbari
سه شنبه 20 مهر 1389, 16:25 عصر
می تونید از Having count(filed)>1 استفاده کنید

علی اکبر
چهارشنبه 21 مهر 1389, 08:14 صبح
احتمالا مطلب خوب نتونستم بگم
شما این کد در نظر بگیرید


select cod,sharh,(select count(*) from table2 where table1.cod=table2.cod) as tedad from table1

این چکار می کنه تعداد رکوردی که در تابل 2 هست وبرابر یا فیلد تابل 1 هست بر می گردونه
حالا من می خوام این شمارش بدو در نظر گرفتن ردیفهای تکراری باشه
این کد چگونه باید تغییر کنه؟

fadak 64
چهارشنبه 21 مهر 1389, 08:30 صبح
سلام شما اگر دوتا جدولتونو با فيلداي تكراري يكي كنين و بعد يه group by با فبلداي مشابهتون روي جدول بگيرين تعداد رو بهتون ميده

Reza_Yarahmadi
چهارشنبه 21 مهر 1389, 09:09 صبح
حالا من می خوام این شمارش بدو در نظر گرفتن ردیفهای تکراری باشه
بازم متوجه منظورتون نشدم!!
اگر منظورتون اين كه اگر فيلد تكراري توي جدول2 باشه فقط يك بار ديده بشه ، كدي كه براتون گذاشتم همين كار رو ميكنه.
اگر قراره فقط اونهايي كه تكراري هستند تعدادشون محاسبه بشه Select اول رو بصورت زير تغيير بديد

with dis as(
Select
Cod
,Sharh
,Per
From table2
Group by
Cod
,Sharh
,Per
Having Count(*) > 1
)
اگر هيچكدوم نيست لطفا با يك مثال توضيح بديد(چند سطر ازهر جدول بذاريد و بگيد خروجي چه داده هايي باشه)