PDA

View Full Version : پیدا کردن رکورد نا متناظر در جدول A نسبت به B



didaaa
چهارشنبه 08 اردیبهشت 1389, 07:38 صبح
بچه ها شمارو بخدا ابروم پیش مدیرم گیره کمکم کنید کلی جستجو کردم ولی به نتیجه ای نرسیدم! ببینید من دوتا جدول دارم میخوام رکوردهایی که در جدول A هستش و کد ملی مثلا 87675768687 یه هم چین چیزیه ببینم تو جدول دوم یعنی B هستشو پیدا کنم ولی نمیدونم از چه دستوری ااستفاده کنم راستش sql یه دستوری (EXCEPT)داره که یه همچین کاری انجام میده ولی ایرادش اینجاست که باید تعداد فیلد ها و نوع شون یکی باشه ولی جداول من فقط دوتا از فیلداش شبیح هم هستند یکی کد ملی و یکی دیگه که varchar هستش حالا موندم چیکار کنم
بچه ها کمکم کنید کلی دعاتون میکنم.

adinochestva
چهارشنبه 08 اردیبهشت 1389, 07:41 صبح
select melliCode from a except select melliCode from b

didaaa
چهارشنبه 08 اردیبهشت 1389, 08:10 صبح
دوست عزیز ممنون که جواب دادی ولی من میخوام کل رکورد برگردونه نه فیلد کد ملی رو این دستور فقط اون فیلدو بر میگردونه ولی من داخل رکوردم دوتا فیلد شبیح به هم دارم.

adinochestva
چهارشنبه 08 اردیبهشت 1389, 08:19 صبح
select foo.* from (select melliCode from a except select melliCode from b) as foo
inner join a on a.melliCode = foo.melliCode

adinochestva
چهارشنبه 08 اردیبهشت 1389, 08:31 صبح
داریم سطور نامتناظر را در میاریم (select melliCode from a except select melliCode from b) و سپس با یکی از جداول join می کنیم !

didaaa
چهارشنبه 08 اردیبهشت 1389, 08:34 صبح
ببینید دوست عزیز من دوتا جدول دارم که یکیش view هستش به نامهای view1 و tblperson که جفتشون دارای فیلدی به نام ID هستند حالا لطف کنید بگید من چطور این کدو طبق جداولم پیاده کنم پیشا پیش ممنون

adinochestva
چهارشنبه 08 اردیبهشت 1389, 08:39 صبح
select tblperson.* from (select ID from tblperson except select ID from view1 ) as foo
inner join IO on tblperson.ID = foo.ID

didaaa
چهارشنبه 08 اردیبهشت 1389, 08:59 صبح
باز نشد!!!!!!!!!!!!!!!!!!!!!!!!! یه نگاه به این عکس بکنید

adinochestva
چهارشنبه 08 اردیبهشت 1389, 09:06 صبح
sry


select tblperson.* from (select ID from tblperson except select ID from view1 ) as foo
inner join tblperson
on tblperson.ID = foo.ID

didaaa
چهارشنبه 08 اردیبهشت 1389, 09:17 صبح
نمیشه اینبار به ON ایراد میگیره :ناراحت:

adinochestva
چهارشنبه 08 اردیبهشت 1389, 09:23 صبح
kein ahnung !
اینبار نباید اررور بده تستش هم کردم
لطف کنی اررور رو بگی شاید بتونم کمکی کنم

didaaa
چهارشنبه 08 اردیبهشت 1389, 09:29 صبح
این کدی بود که نوشتم!

select UCview.* from (select ID from UCview except select ID from TblMainHealthHouse ) as foo inner join on UCview.ID = foo.IDو اینم اروری که داد

adinochestva
چهارشنبه 08 اردیبهشت 1389, 09:47 صبح
ای بابا


select UCview.* from (select ID from UCview except select ID from TblMainHealthHouse ) as foo inner join UCview on UCview.ID = foo.ID

didaaa
چهارشنبه 08 اردیبهشت 1389, 10:40 صبح
یه سوال دیگه عزیز اگه این دستور هر چند دقیقه یک بار روی همین جداول که شاید یک میلیون رکورد داشته باشه چقدر زمان میبره؟ یعنی چه مدت بار زمانی روی سیستم تحمیل میکنه؟

s.Jabbari
چهارشنبه 08 اردیبهشت 1389, 11:18 صبح
براي بهبود سرعت در اجراي مكرر يك دستور بهتر اون رو در قالب SP بنويسي

adinochestva
چهارشنبه 08 اردیبهشت 1389, 11:34 صبح
براي بهبود سرعت در اجراي مكرر يك دستور بهتر اون رو در قالب SP بنويسي
خیلی با این جمله موافق نیستم چون execution plan برای query ها هم ساخته میشه.
کلا جالب نیست رو یک میلیون رکورد این کووری هر چند دقیقه اجرا شود تو طراحیت یک تجدید نظری بکنی بد نیست

محمد سلیم آبادی
چهارشنبه 08 اردیبهشت 1389, 13:38 عصر
یا


SELECT T1.*
FROM UCview T1
OUTER APPLY (SELECT 1 AS K
FROM TblMainHealthHouse T2
WHERE T1.ID = T2.ID) D
WHERE D.K IS NULL


این مقاله به این موضوع اختصاص داده شده است:
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=196&AuthorID=11

didaaa
چهارشنبه 08 اردیبهشت 1389, 13:44 عصر
راستش این کار یه پروژه سنگینه که به دلخواه من طراحی نشده راستش قبل از من این پروژه یه مدیر دیگه داشت که متاسفانه وسط کار گذاشت رفت حالا من تو تیم مثلا با تجربه ترم البته نه در دیتا بیس حالا هم مجبوریم طبق برنامه طراحی شده جلو بریم! واسه همین بود که میخواستم بدونم این جستجو و یا تطابق دو جدول هر چند دقیقه انجام بشه چقدر طول میکشه! اخه میدونید نمی خوام برنامه وسط راه کم بیاره اونم با این سیستم که تو ادارجات هستش. اگه هم پیشنهادی داشتید ممنون میشم.