نمایش نتایج 1 تا 7 از 7

نام تاپیک: نحوه نمایش ضرب دکارتی جداول

  1. #1
    کاربر تازه وارد آواتار k.asasi_programmer
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    همین تهران خودمون
    پست
    59
    تشکر کردن
    91
    9 بار تشکر شده در 9 پست

    نحوه نمایش ضرب دکارتی جداول

    با سلام خدمت دوستان عزیز و گرامی

    از خدمت شما یک سوال دارم:

    لطفا به شکل اتچ نگاه کنید.
    من در دیتابیسم دو جدول به نام های شغل ازاد پیشکسوت و تلفن شغل ازاد پیشکسوت دارم.
    درجدول تلفن شغل ازاد پیشکسوت کلید خارجی در فیلد شناسه کاربری نسبت به جدول شغل ازاد پیشکسوت تعریف کرده ام.
    این کار را برای این انجام داده ام که شغل ازاد هر پیشکسوت بتواند چند تلفن داشته باشد.
    هر شغل ازاد یک پیشکسوت می تواند حداکثر 3 تلفن در برنامه به خود اختصاص دهد.
    حال می خواهم این دو جدول را در هم ضرب کنم چه کار می توانم بکنم تا همه فیلدهای جدول شغل ازاد پیشکسوت به همراه سه ستون تلفن شغل ازاد مربوط به ان در ستون های یک گرید ویو قرار گیرد.

    خیلی ممنون ازلطفی که در حق بنده مبذول می فرمایید.
    انشالله جبران محبت نمایم.

    عکس های ضمیمه عکس های ضمیمه

  2. #2
    مدیر بخش آواتار You-See
    تاریخ عضویت
    تیر 1387
    محل زندگی
    جنوب تهران
    پست
    3,231
    تشکر کردن
    419
    2,218 بار تشکر شده در 1,459 پست

    نقل قول: درخواست راهنمایی فوری

    بهترین کار اینه که فیلد های تلفن رو بیاری تو جدول .ShoghlAzadPishKesvat
    اصلا ایرادی نداره که پر از مزیت هم هست.
    1-نهایتا 3 ردیف تلفن داری
    2-از شر pivot یا subselect های کند خلاص می شی
    3-از شرrelation خلاص میشی
    4-select بسیار ساده میشه.
    آموزش ساخت کامپوننت VCL
    دلفی و ریاضی
    توابع تبدیل تاریخ با دقت 5000 سال تست شده در تقویم رسمی ایران
    . . .
    نیازی به پرسیدن در خصوصی نیست، در تاپیک مطرح کنید. (فقط در صورت نیاز به همکاری پیام خصوصی بدهید)

  3. کاربرانی که به خاطر مطلب مفید You-See از وی تشکر کرده‌اند:


  4. #3
    کاربر تازه وارد آواتار k.asasi_programmer
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    همین تهران خودمون
    پست
    59
    تشکر کردن
    91
    9 بار تشکر شده در 9 پست

    نقل قول: درخواست راهنمایی فوری

    نقل قول نوشته شده توسط yousijoon مشاهده تاپیک
    بهترین کار اینه که فیلد های تلفن رو بیاری تو جدول .ShoghlAzadPishKesvat
    اصلا ایرادی نداره که پر از مزیت هم هست.
    1-نهایتا 3 ردیف تلفن داری
    2-از شر pivot یا subselect های کند خلاص می شی
    3-از شرrelation خلاص میشی
    4-select بسیار ساده میشه.
    دوست عزیز خیلی ممنون از توجهتان
    من به دو دلیل نمی خواهم این روشی که شما فرمودید را اجرا کنم.
    1-چون کل پروژه باید تغییرات بسیار زیادی نماید و این تنها 2 جدول از 20 جدول بود.
    2-این کار باعث می شه قوانین نرمال سازی نقض بشه.
    خیلی ممنون می شم با توجه به اطلاعاتی که داری ان روشی ر ا که مد نظرم هست را بگی
    هر چی من تو اینترنت گشتم مطلبی پیدا نکردم.

  5. #4
    کاربر دائمی آواتار Galawij
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شاره که م سنه
    پست
    712
    تشکر کردن
    24
    448 بار تشکر شده در 301 پست

    نقل قول: درخواست راهنمایی فوری

    سلام
    برای ضرب دکارتی چند جدول در همدیگر از CROSS JOIN استفاده کنید.
    بنده تدبیر هم اگر کند، محتاج تقدیر خداست ...

  6. #5
    مدیر کل سایت آواتار حمیدرضاصادقیان
    تاریخ عضویت
    آذر 1382
    محل زندگی
    تهران
    پست
    6,469
    تشکر کردن
    324
    3,605 بار تشکر شده در 1,710 پست

    نقل قول: نحوه نمایش ضرب دکارتی جداول

    سلام.
    با استفاده از Join معمولی بین جداول به راحتی میتوانید به نتیجه دلخواه برسید.
    مثال رو ببینید:

    Select Sh.*,Tl.* from ShoghAzadPishkesvat Sh Inner join TelShoghAzadPish Tl on Tl.Username=Sh.UserNAme



    بهترین کار اینه که فیلد های تلفن رو بیاری تو جدول .ShoghlAzadPishKesvat
    اصلا ایرادی نداره که پر از مزیت هم هست.
    1-نهایتا 3 ردیف تلفن داری
    2-از شر pivot یا subselect های کند خلاص می شی
    3-از شرrelation خلاص میشی
    4-select بسیار ساده میشه.
    این صحیح نیست که Performance رو فدای سادگی کار کنیم. برای این کار اصلا نیاز به Pivot یا Subquery نیست. بعد در بحث Performance یکی از راهها اینه که جداول سبک باشند تا میزان چگالی اطلاعات در Page File ها ، بالا رود.که موقع واکشی اطلاعات Page های کمتری خونده بشه و سرعت افزایش پیدا کنه. و فاکتورهای خیلی زیاد دیگری که ممکنه تاثیر منفی در اطلاعات بذارند.

    وب سایت من :

  7. کاربرانی که به خاطر مطلب مفید حمیدرضاصادقیان از وی تشکر کرده‌اند:


  8. #6
    کاربر تازه وارد آواتار k.asasi_programmer
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    همین تهران خودمون
    پست
    59
    تشکر کردن
    91
    9 بار تشکر شده در 9 پست

    Question نقل قول: نحوه نمایش ضرب دکارتی جداول

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام.
    با استفاده از Join معمولی بین جداول به راحتی میتوانید به نتیجه دلخواه برسید.
    مثال رو ببینید:

    Select Sh.*,Tl.* from ShoghAzadPishkesvat Sh Inner join TelShoghAzadPish Tl on Tl.Username=Sh.UserNAme


    این صحیح نیست که Performance رو فدای سادگی کار کنیم. برای این کار اصلا نیاز به Pivot یا Subquery نیست. بعد در بحث Performance یکی از راهها اینه که جداول سبک باشند تا میزان چگالی اطلاعات در Page File ها ، بالا رود.که موقع واکشی اطلاعات Page های کمتری خونده بشه و سرعت افزایش پیدا کنه. و فاکتورهای خیلی زیاد دیگری که ممکنه تاثیر منفی در اطلاعات بذارند.
    مدیر محترم خیلی ممنون از توجهی که به سوال بنده داشتید.

    ولیکن راه حلی که جناب عالی پیشنهاد کردید مشکل من را حل نمی کند..
    چون فرض کنید پیشکسوتی با نام username=pish1000 دو تلفن داشته باشد.این کد sql که شما نوشتید باعث خواهد شد که دو سطر(رکورد)ی که در gridview قرار می گیرد تعلق بگیرد به این username و تعداد سطرهای گزارش در کل خیلی زیاد شود.(به فایل ضمیمه نگاه کنید.)


    چیزی که مده نظر بنده بود این است با توجه به اینکه درون برنامه هر پسشکسوت حداکثر میتواند سه شماره تلفن یه خود اختصاص دهد پس من هم به تعداد حداکثز تلفن های دریافتی در برنامه سه ستون در gridview به نام های تلفن1 و تلفن2 و تلفن3 قرار دهم.
    سوال من این است که چطور این چنین کدی را با sql پیاده سازی کنم.
    خیلی ممنون از نوجه مجددتان
    عکس های ضمیمه عکس های ضمیمه

  9. #7
    مدیر کل سایت آواتار حمیدرضاصادقیان
    تاریخ عضویت
    آذر 1382
    محل زندگی
    تهران
    پست
    6,469
    تشکر کردن
    324
    3,605 بار تشکر شده در 1,710 پست

    نقل قول: نحوه نمایش ضرب دکارتی جداول

    پس با این اوصاف یا باید راه پست 2 رو در پیش بگیرید که ساده هست.یا اینکه از Pivot ها استفاده کنید.
    درمورد Pivot هم می توانید به اینجا مراجعه کنید.
    وب سایت من :

  10. کاربرانی که به خاطر مطلب مفید حمیدرضاصادقیان از وی تشکر کرده‌اند:


بوک مارک کردن این تاپیک

بوک مارک کردن این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •