ورود

View Full Version : كمك در نوشتن query



mohammad_118
دوشنبه 30 آبان 1390, 09:06 صبح
سلام من دو تا جدول دارم كه اطلاعات تلفن و صاحبان آنها داخلش هست جدول الف با 1000 ريكورد با شماره تلفن هاي تكراري جدول (ب) با 500 ريكورد با شماره تلفن هاي غير تكراري من ميخوام دستوري بنويسم كه شماره هايي كه در جدول (ب) هست:
1- اگر در جدول (الف) موجود است فقط فيلد شماره و آدرس آن جايگزين شود
2- اگر موجود نيست ريكورد اضافه شود
3 - اگر در جدول الف به صورت تكراري موجود است فيلد شماره و آدرس آن جايگزين يكي از آنها شود و بقيه ريكورد ها با شماره هاي مشابه حذف شود.
خيلي هنگ كردم كمك كنيد - تشكر !!

karmand
سه شنبه 08 آذر 1390, 08:43 صبح
براي حذف تكراري از جدول 1000تايي يك جدول جديد بساز و فيلد تلفن را گروپ كن ادرس را گروپ نكن چون تكست است و خطا دارد
SELECT tel,address, name
INTO dbo.newtbl
FROM dbo.asli
GROUP BY tel

اين يك جدول جديد بدون تكراري ميسازد بعد جدول دوم را در اين جدول append كن به شرط not in(select

hkiani
پنج شنبه 10 آذر 1390, 18:53 عصر
سلام

مورد اول: اگر ركورد جدول ب در جدول اول يافت شود (فقط يك بار) فيلد شماره تلفن و آدرس جدول الف بر اساس جدول ب آپديت گردد (اميدوارم برداشتم درست بوده باشد):



a_table: جدول الف
ليست فيلدها:
frn_key: forign key
tel_no: شماره تلفن
address: آدرس

b_table: جدول ب
شامل فيلدهاي زير:
pri_key: primary key
tel_no: شماره تلفن
address: آدرس

كوري شماره يك:

UPDATE a_table
SET tel_no = (
SELECT tel_no
FROM b_table
WHERE b_table.pri_key = a_table.frn_key
), address = (
SELECT address
FROM b_table
WHERE b_table.pri_key = a_table.frn_key
)
WHERE frn_key IN (
SELECT frn_key
FROM a_table
GROUP BY frn_key
HAVING COUNT(frn_key) = 1
)


در كد بالا در خط شماره 25 ركوردهايي از جدول الف را فيلتر مي‌كند كه فقط يكبار در جدول وجود داشته باشند و موارد تكراري را در نظر نمي‌گيرد.
در كوري شماره 3 درخواستي شما، در صورتي كه موارد تكراري طوري حذف شوند كه فقط يكي از آن‌ها باقي بماند بعد به همين مورد كوري شماره يك كه كد آن را نوشتم تبديل مي‌شود.

كوري‌هاي 2 و 3 را هم به روش مشابهي مي‌توانيد بنويسيد.

http://www.persianstudio.ir