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

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

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

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

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

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

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

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

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

  2. #2

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

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

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

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

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

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

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

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

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

  5. #5

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

    سلام.
    با استفاده از 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 های کمتری خونده بشه و سرعت افزایش پیدا کنه. و فاکتورهای خیلی زیاد دیگری که ممکنه تاثیر منفی در اطلاعات بذارند.


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

    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 پیاده سازی کنم.
    خیلی ممنون از نوجه مجددتان
    عکس های ضمیمه عکس های ضمیمه

  7. #7

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

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

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

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