ورود

View Full Version : استخراج رکورهایی که در جدول اول موجود ولی در جدول دوم موجود نیست



khoshblagh
چهارشنبه 02 تیر 1395, 02:30 صبح
با سلام خدمت دوستان
کد زیر باید یک رکورد از جدول اول را نشان بدهد که در جدول دوم موجود نیست ولی عملا هیچ رکوردی را بر نمی گرداند. خطایی هم در کار نیست. به نظر شما علت چیست؟ متشکرم.


SELECT tblPerson.ID,tblPerson.Name,tblPerson.LName,tblPer son.PersonelCode,
tblPerson.VazBimehTakmil,tblPerson.VazFali
FROM tblPerson
WHERE (tblPerson.VazBimehTakmil=1)
AND (tblPerson.VazFali=1)
AND (tblPerson.ID NOT IN (SELECT tblTakafol.IDPerson FROM tblTakafol))

pezhvakco
چهارشنبه 02 تیر 1395, 09:16 صبح
خطایی هم در کار نیست. به نظر شما علت چیست؟
این رو خود شما میدونی.
کد دستور سه تا شرط داره که هر کدوم باید برقرار باشه .
شاید اون دو تا دیگه گیر کار باشه.

khoshblagh
چهارشنبه 02 تیر 1395, 12:30 عصر
این رو خود شما میدونی.
کد دستور سه تا شرط داره که هر کدوم باید برقرار باشه .
شاید اون دو تا دیگه گیر کار باشه.
با تشکر
نه اون 2 تا مشکلی ندارند.تست زدم. دقیفا اگر جدول دوم رکوردی که Id مشترک با id اول نداشته باشه این مشکل پیش می آید.

pezhvakco
چهارشنبه 02 تیر 1395, 16:58 عصر
نه اون 2 تا مشکلی ندارند.تست زدم.


دقیفا اگر جدول دوم رکوردی که Id مشترک با id اول نداشته باشه این مشکل پیش می آید.
همزمان بودن هر سه تاشرط رو بررسی کنید

اگر
جدول tblPerson شما دارای سه ردیف با ستون ID با داده 1 ،2 و 3 است
جدول tblTakafol شما دارای سه ردیف با ستون ID با داده 4، 5 و 6 است
=>
خط سوم دستور شما میشه

AND (tblPerson.ID NOT IN (4, 5, 6))
و این هیچ مشکلی ندارد.

مشکل کد دستور شما از جای دیگه است.

khoshblagh
چهارشنبه 02 تیر 1395, 20:04 عصر
با تشکر از پاسختان
اصولا جدول اول مربوط به کارکنان میباشد و جدول دوم مربوط به اعضا خانواده کارکنان است. جدول اول فیلد id یکتا بوده و در جدول دوم IDPerson همان Id جدول اول است. مشکل این است در گزارش که ساختم میخواهم هم افراد دارای خانواده و هم کارکنلان مجرد نمایش داده شوند. در این گزارش افراد دارای خانواده بدرستی نمایش داده میشود . ولی افراد فاقد خانواده نمایش داده نمی شود. دلیلش هم اینه که هیچ رکوردی برای نامبرده در جدول دوم وجود ندارد. بنابراین هیچ مقایسه ای به جز کنترل وجود id جدول اول با IDPerson جدول دوم وجود ندارد. همین.:ناراحت:

pezhvakco
پنج شنبه 03 تیر 1395, 08:46 صبح
دلیلش هم اینه که هیچ رکوردی برای نامبرده در جدول دوم وجود ندارد.
اگر ID باشد که در جدول اول باشد ولی در جدول دوم نباشد با کد دستور خط سوم نمایش داده میشود.


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

khoshblagh
پنج شنبه 03 تیر 1395, 17:12 عصر
با سلام
اضافه نمودن یک ستون جهت مجرد یا متاهل بودن مشکلی را حل نمیکند.زیرا در عمل افراد مجردی وجود دارند که پدر و مادر آنان در جدول تکفل ثبت شده اند، پس علیرعم تجرد آنان عملا افراد تحت تکفل دارند. ضمن اینکه در حال حاضر این ستون در جدول اول موجود است ولی به دلیل گفته شده قابل استفاده جهت این موضوع نیست. در رابطه با خط سوم پیشنهادی شما کدی در رابطه با واکشی اطلاعات از جدول تکفل دیده نمیشود. در صورت امکان کد پست یک را به روش پیشنهادی خودتان تغییر و ارائه نمائید. متشکرم:لبخندساده:

Mahmoud.Afrad
جمعه 04 تیر 1395, 03:56 صبح
چک کنید در نتیجه سلکت داخلی ، Null هم وجود دارد یا نهSELECT tblTakafol.IDPerson FROM tblTakafol

khoshblagh
جمعه 04 تیر 1395, 09:06 صبح
چک کنید در نتیجه سلکت داخلی ، Null هم وجود دارد یا نهSELECT tblTakafol.IDPerson FROM tblTakafol
با سلام و تشکر از هر دو بزرگوار:تشویق:
بله وجود دارد و دقیقا مشکل از اینجا بود . با حذف رکوردهای Null مسئله حل شد.

Mahmoud.Afrad
جمعه 04 تیر 1395, 19:01 عصر
در کوئری داخلی مقادیر null را سلکت نکنید
SELECT tblTakafol.IDPerson FROM tblTakafol where tblTakafol.IDPerson is not null