
نوشته شده توسط
mazoolagh
سلام دوباره
خب شما در بخش SQL پرسش رو مطرح کردین
و این یعنی پاسخ هم باید متناسب با همین باشه.
برای روشنتر شدن موضوع:
کار با دیتا میتونه در سطح دیتابیس باشه (همه کارهایی که با کدهای TSQL روی table ها انجام میدین)
یا در سطح اپلیکیشن (کدهایی که در سی شارپ (یا هر زبان دیگه و در هر محیطی) برای کار روی datatable ها و list ها و ... مینویسین).
وقتی صحبت از ترکیب نتایج در سطح دیتابیس میشه، این ترکیب میتونه در سطح رکورد باشه (UNION, EXCEPT, INTERSECT, DISTINCT معروف به Set Operations) - مثل همین پرسش
یا در سطح فیلد باشه (انواع JOIN)
یا ترکیب اینها باشه (مثل CROSS JOIN)
یا کارهای پیچیده تر (مثل APPLY)
و ...
اینها که گفته شد همگی در لایه دیتابیس (MS SQL ، MySQL ، ...) مستقیما قابل انجامه
ولی در لایه برنامه باید از LINQ استفاده کنین
و پیاده سازی بعضی از اینها به نسبت پیچیده تر هست.
هر کدوم اینها مزایا و معایب خودش رو داره
و این که کدوم روش پیاده بشه بستگی به شرایط داره،
ولی قانون کلی اینه اگر تعداد رکوردها و اندازه دیتا کم هست و همزمانی هم نیست (یک کاربره)
خب اینها دیگه چندان تفاوتی ایجاد نمیکنه - البته پارامترها فقط همین ها هم نیست،
ولی اگر این شرایط نباشه حتما باید در لایه دیتابیس انجام بشه،
یا این که بخش فیلتر و join و aggregate در لایه دیتابیس انجام بشه ولی پردازش نهایی و شکل دادن دیتا در اپلیکیشن.
========
حالا با این مقدمات برمیگردیم به پرسش:
این روشی که برای append دیتا به دیتاتیبل استفاده شده یک حالت خیلی خاص از ساده ترین وضعیت هست و برای همین ایرادش مشخص نمیشه،
اگر رکورد تکراری در این 2 (یا چند) جدول باشه دیگه تشخیص و کنار گذاشتنش بدون کدنویسی اضافه شدنی نیست.