PDA

View Full Version : پیدا کردن فیلدهای تکراری در بانک Access



sardar_ahmadi
پنج شنبه 04 مرداد 1386, 12:34 عصر
چگونه میشود رکوردهای تکراری را در بانک Access در دلفی 7 را شناسائی کرد و نمایش داد مثلا آنهائیکه نام و نام خانوادگی مثل هم دارند . نه فیلد کلیدی آنها.لطفا جامع راهنمائی کنید.

رها
پنج شنبه 04 مرداد 1386, 13:27 عصر
جدول رو با خودش روی ستونی که می خوای مقادیرش تکراری باشند inner join کن.


select name,family from table1 innerjoin table1 table2 on table1.name=table2.name and table1.family=table2.family

SYNDROME
پنج شنبه 04 مرداد 1386, 14:57 عصر
با سلام

چگونه میشود رکوردهای تکراری را در بانک Access در دلفی 7 را شناسائی کرد و نمایش داد مثلا آنهائیکه نام و نام خانوادگی مثل هم دارند . نه فیلد کلیدی آنها.لطفا جامع راهنمائی کنید.
کد زیر را بنویس.


SELECT A, Count(a) as Counter
FROM Table1
Group By a

جواب دستور بالا مقدار فیلد A و در مقابل آن تعداد تکرار این مقدار است
متلاً


A Counter
SYNDROME 1
MOhamad 2

تعداد تکرار مقدار "Mohamad" برابر 2 است.
حالا می توانی این را در یک Viewنوشته و سپس Counterبالای 1 را فیلتر کنید.
موفق باشی

ghabil
پنج شنبه 04 مرداد 1386, 15:51 عصر
.
حالا می توانی این را در یک Viewنوشته و سپس Counterبالای 1 را فیلتر کنید.
موفق باشی

و هم میتونی ته همین کوئری اینم اضافه کنی :



Having Count(A) > 1

SYNDROME
پنج شنبه 04 مرداد 1386, 17:12 عصر
با سلام

و هم میتونی ته همین کوئری اینم اضافه کنی :


Having Count(A) > 1

اگر امکان دارد مثال را کامل بنویسید.
با تشکر

علامت سوال
پنج شنبه 04 مرداد 1386, 18:55 عصر
ای بابا روشن هست که


SELECT A, Count(a) as Counter
FROM Table1
Group By a
Having Count(A) > 1

sardar_ahmadi
شنبه 06 مرداد 1386, 12:39 عصر
دوستان من میخام خروجی این کوری یک جدول دیگری باشد. یا اینکه خروجی در یک فیلدی از همین جدول وارد شود . برای اینکار چکار کنم؟

SYNDROME
شنبه 06 مرداد 1386, 12:55 عصر
با سلام

دوستان من میخام خروجی این کوری یک جدول دیگری باشد. یا اینکه خروجی در یک فیلدی از همین جدول وارد شود . برای اینکار چکار کنم؟
از دستور زیر استفاده کن.


Insert Into Table2(a,b)
SELECT A, Count(a) as Counter
FROM Table1
Group By a
Having Count(A) > 1

بنده جواب را داخل یک Tableدیگر ریختم.
موفق باشید

sardar_ahmadi
یک شنبه 07 مرداد 1386, 07:14 صبح
دوستان تا اینجا درست عمل کرده اما من میخوام اگر نام و نام خانوادگی و نام پدر مثل هم بودند یعنی سه فیلد و یا بیشتر اینکار را انجام دهد . بعد در جدول جدید همه فیلدها ریخته شود نه این سه فیلدی که انتخاب کردیم.
در ضمن بانک من ACCESS است چطور در آن جدول جدید ایجاد میشود که حاصل کوری در آن ریخته شود .
با تشکر فراوان

Batman
یک شنبه 07 مرداد 1386, 08:07 صبح
با سلام
select * from tablename where (name<>:name) and (family<>:family) and (fathername<>:fathername)
دوست عزیز این کد رو هم چک کن البته جاهایی که ":" داره باید پارامترها از ورودی دریافت بشه
این کد اونهایی رو که نام و نام خانوادگی و نام پدرشون با هم فرق داره نمایش میده

sardar_ahmadi
یک شنبه 07 مرداد 1386, 08:56 صبح
گفتم که دستورات بالا خوب عمل میکنه برای یک فیلد. نه برای چند فیلد.
در ضمن بانک من ACCESS است چطور در آن جدول جدید ایجاد میشود که حاصل کوری در آن ریخته شود . در SQL جدول براحتی اضافه و حذف میشه ولی در Access نمدونم .
با تشکر فراوان

SYNDROME
یک شنبه 07 مرداد 1386, 14:07 عصر
با سلام


در ضمن بانک من ACCESS است چطور در آن جدول جدید ایجاد میشود که حاصل کوری در آن ریخته شود . در SQL جدول براحتی اضافه و حذف میشه ولی در Access نمدونم .
با تشکر فراوان
گزینه ای بنام Create Table In design View دارد که مانند New Table در SQLعمل می کند.
موفق باشی

Hamid_PaK
یک شنبه 07 مرداد 1386, 15:24 عصر
دوستان من میخام خروجی این کوری یک جدول دیگری باشد. یا اینکه خروجی در یک فیلدی از همین جدول وارد شود . برای اینکار چکار کنم؟
از Union استفاده کنید.
ولی بهتر که یک کوئری موقتی ایجاد کنید و نتیجه رو از آن فراخوانی کنید.

یا حق ...

Batman
یک شنبه 07 مرداد 1386, 17:59 عصر
من هم با نظر آقا حمید موافقم
استفاده از یک query موقت حجم برنامه رو هم بالا نمیبره

sardar_ahmadi
یک شنبه 07 مرداد 1386, 21:00 عصر
دوستان مثل اینکه خوب متوجه نشدند. سوال من این بود که : در یک بانک Access اگر دو فیلد (نام و نام خانوادگی ) مثل هم بود : آن رکوردها چند بار تکرار شده و حاصل کلیه فیلد های رکوردهای تکراری را در جدولی که باید در Access ساخته شود ریخته شود . مفهومه؟
یافته ها :1- محمد احمدی 2 بار تکرار شده
2- محسن محمدی 4 بار و . . . .. .

خروجی در جدول دیگری با همان فیلدها:
نام و نام خ تکرار کد حقوقی شماره بن فی حقوق
1-محمد احمدی 2 1200 250 500 26500000 . . .. . .. . ..
2- محسن محمدی 4 1201 250 500 27500000

اینها مثال بودند.

SYNDROME
یک شنبه 07 مرداد 1386, 21:15 عصر
با سلام


سوال من این بود که : در یک بانک Access اگر دو فیلد (نام و نام خانوادگی ) مثل هم بود : آن رکوردها چند بار تکرار شده و حاصل کلیه فیلد های رکوردهای تکراری را در جدولی که باید در Access ساخته شود ریخته شود . مفهومه؟
یافته ها :1- محمد احمدی 2 بار تکرار شده
2- محسن محمدی 4 بار و . . . .. .

دوست عزیز دقیقا چند تا تاپیک قبل دقیقا همین نکته را جواب داده شد.


Insert Into Table2(Name , Family,b)
SELECT Name , Family, Count(*) as Counter
FROM Table1
Group By Name , Family

اگر دقت کنید نام و نام خانوادگی در Table2ریخته شده و در فیلد Bنیز تعداد تکرار هر کدام از رکوردها قرار می گیرد.
موفق باشید

sardar_ahmadi
سه شنبه 09 مرداد 1386, 08:19 صبح
دوستان اشتباه من کجاست : این دستورات SQL من است که میخام اطلاعات کامل جدول nam_kar را در جدول nam_kar2 بریزم باضافه تعداد تکرار nam و namf (نام و نام خانوادگی) در جدول nam_kar . لطفا دست مرا بگیرید و پا به پا برید.

شما جناب SYNDROME شما کمکمان کنید.

sardar_ahmadi
سه شنبه 09 مرداد 1386, 11:55 صبح
لطفا راهنمائی بفرمائید . خیلی ضروریه.

sardar_ahmadi
چهارشنبه 10 مرداد 1386, 07:20 صبح
دوستان اشتباه من کجاست : این دستورات SQL من است که میخام اطلاعات کامل جدول nam_kar را در جدول nam_kar2 بریزم باضافه تعداد تکرار nam و namf (نام و نام خانوادگی) در جدول nam_kar . لطفا دست مرا بگیرید و پا به پا برید.

Insert Into nam_kar2(sh_kar,nam,namf,namp,sh_sh,nao_k,vaz_kar)
SELECT nam,namf, Count(nam,namf) as Counter
FROM nam_kar Group By nam,namf
Having Count(nam,namf) > 1

SYNDROME
چهارشنبه 10 مرداد 1386, 14:27 عصر
دوستان اشتباه من کجاست : این دستورات SQL من است که میخام اطلاعات کامل جدول nam_kar را در جدول nam_kar2 بریزم باضافه تعداد تکرار nam و namf (نام و نام خانوادگی) در جدول nam_kar . لطفا دست مرا بگیرید و پا به پا برید.

اگر منظورتان تکرار نام و نام خانوادگی با هم است.مانند :
مثال
محمد / محمدی
محمد / احمدی
علی / احمدی
محمد / احمدی
بعد از Insert:
محمد / محمدی / 1
محمد / احمدی / 2
علی / احمدی /1
مثال را به شکل زیر تغییر دهید(در جدول دوم نیاز به سه فیلد نام ، نام خانوادگی و تعداد دارید)


Insert Into nam_kar2(nam,namf,Num)
SELECT nam,namf, Count(*) as Counter
FROM nam_kar
Group By nam,namf

موفق باشید

sardar_ahmadi
یک شنبه 14 مرداد 1386, 09:41 صبح
دوستان ار دستور Count(*) ایراد میگیره و دستور Having را برای چند فیلد چگونه مورد استفاده قرار دهم .

sardar_ahmadi
یک شنبه 14 مرداد 1386, 10:21 صبح
دوستان لطفا مارا فراموش نکنید چون تایپیک که به صفحه دوم برود دیگر فراموش میشود . عرض کردم که خیلی ضروریه.

SYNDROME
یک شنبه 14 مرداد 1386, 17:13 عصر
با سلام

دوستان ار دستور Count(*) ایراد میگیره

دستوری را که نوشته ای و پیغام خطا بنویس(من خودم دستوری را که صفحه قبل نوشتم تست کردم درست بود)

دستور Having را برای چند فیلد چگونه مورد استفاده قرار دهم .
این هم یک مثال


SELECT AutoNumber, ID, COUNT(*) AS Counter
FROM Table1
GROUP BY AutoNumber, ID
HAVING (COUNT(*) = 2) OR
(ID = 'a')

می توانی به جای OR از Andهم استفاده کنی.
موفق باشید

sardar_ahmadi
یک شنبه 14 مرداد 1386, 20:24 عصر
دوست عزیز جناب SYNDROME این دستورات من است :

SELECT NAM , fnam Count(nam,fnam) as Counter
into nam_kar2
FROM nam_kar
Group By nam ,fnam
Having Count(nam,fnam) > 1

این هم خطای برنامه در موقع اجراء

SYNDROME
یک شنبه 14 مرداد 1386, 22:23 عصر
با سلام

دوست عزیز جناب SYNDROME این دستورات من است :
SELECT NAM , fnam Count(nam,fnam) as Counter
into nam_kar2
FROM nam_kar
Group By nam ,fnam
Having Count(nam,fnam) > 1
این هم خطای برنامه در موقع اجراء
دستور را دقیقا اینجوری بنویس.


SELECT NAM , fnam , Count(*) as Counter
FROM nam_kar
Group By nam ,fnam
Having Count(*) > 1

Errorشما به خطره نگداشتن "," بود.
حالا برای ریختن در یک جدول دیگر اینجوری بنویس.


Insert Into Table1(Nam1,Fnam1,Count1)
SELECT NAM , fnam , Count(*) as Counter
FROM nam_kar
Group By nam ,fnam
Having Count(*) > 1

جدول دوم هم مشخص است که سه تا فیلد دارد که برای ذخیره نام(Nam1) و نام خانوادگی(Fnam1) و تعداد رکوردها(Count1)است.
موفق باشید