PDA

View Full Version : پاسخ فورم قدیمی دو جدول زیر هم



منصور بزرگمهر
چهارشنبه 04 تیر 1382, 04:14 صبح
پاسخ فورم قدیمی دو جدول زیر هم

در ابتدای فورم قدیمی (قسمت اکسس) یکی از دوستان سئوال مطرح کرده بود، که تا انجا که من فهمیدم، شاید بتوانم به سئوال ایشان پاسخ دهم.
سئوال ایشان این بود که چگونه می توان دو جدول را در یک پرس جو زیر هم آورد. البته دوستان پاسخ اوردند با پرس جو Union که سپس پرس کننده گفته بود منظور این نمی باشد، بلکه منظور این می باشد که مواردی که در پرس جوی دوم اورده می شود، در پرس جوی اول حذف گردد، که راه حل فوق دو گونه می باشد :

الف : دستور Union خود سطرهای تکراری را حذف خواهد کرد، البته به شرط آنکه کلیه ستون های سطر مذکور یکسان باشد.(برای آوردن همه سطرها حتی تکراری باید عبارت Union All را نوشت.

ب : در پرس جو اول یک زیر پرس جو گذاشت که در این زیر پرس جو مواردی که در پرس جو دوم خواهد امد دوباره مشخص و سرط این پرس جو را نبودن این موارد ذکر کرد.

مثال :
فرض ما یک جدول داریم که باید بروی تعدادی از سطرهای ان پردازشی اضافه صورت پذیرد، و سپس پس از پردازش با جدول اولیه خود نمایش یابد. حال هنگامی که موارد جدول اولیه و موارد پردازش شده بخواهند یکباره نمایش یابند( با دستور Uion) کلیه موارد جدول اولیه( بر خلاف نظر ما و نه فقط موارد عادی و غیر پردازشی) بلکه همگی امده و بدین ترتیب نتیجه پرس جو سطرهای تکراری پردازش نشده و پردازش شده خواهد بود. حال برای جلوگیری از این وضعیت مواردی که برای جدول دوم جدا شده بود همان پرس جو را بعنوان زیر پرس جو برای پرس جوی جدول اول استفاده و موارد غیر آن را در خواست می نمائیم. نمونه ای از توضیحات بالا در مثال زیر امده است :

Select A,B,C
From Table
Where A>0 And B Not In (Select A From Table Where A>0
Union
Select AA,BB,CC
From SqlPardazesh
Where ...
Order By A... ;

در بالا زیر پرسش اولیه همان مواردی که در پردازش دوم خواهد امد نمایش نخواهد داد.

تذکر 1 : برای زیر پرس جو و با عملگر In تنها باید یک سطر برگردانده شود

تذکر 2 :عملگر In با عبارت In بعد از عبارت بقخئ که معمولاً می اید و به معنای آدرس فیزیکی جدول مورد پرس جو می باشد اشتباه نگردد(می توان به شکل گفته شده جدول فایل دیگری را در فایل خودمان پرس جو یا ترکیب کرد)
امیدوارم توانسته باشم مشکل دوستمان را درست درک، درست حل و درست ارائه نموده باشم، لطفآً دوستی که سئوال مربوطه را مطرح کرده بود، در مورد پاسخ اینجانب نظر فرمایند.
متشکرم