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

نام تاپیک: گرفتن فیلد Memo از MsAccess با ADO.Net

  1. #1

    گرفتن فیلد Memo از MsAccess با ADO.Net

    دوستان سلام
    اگه در MsAccess دیده باشید فیلدهای از نوع Text حداکثر شامل 255 کاراکتر است و برای متن های بزرگ باید از فیلدهای Memo و اگه دیگه خیلی گردن کلفت باشه از فیلدهای Ole استفاده کرد.
    اما ظاهرا Ado.net هیچ کدوم از این دو فرمت را ساپورت نمیکنه. اگه فیلد رو Ole بذاریم، یه پیغام میده که Ole و Memo ساپورت نمیشن و اگه فیلد رو Memo بذاریم، ظاهرا فیلد را میاره ولی فقط 255 کاراکتر اولش رو میاره. یعنی یه جورایی اونو به عنوان یه فیلد Text میبینه.
    آیا کسی راهی به نظرش میرسه؟
    ممنون

  2. #2
    دوباره سلام

    ظاهرا Ado.Net فیلد Memo را ساپورت میکنه اما مشکل از یه جای دیگه بود. کوئری ای که من انجام میدادم دارای Group By بود و وقتی یک فیلد Memo گروپ میشه نمیدونم چرا خود به خود 255 کاراکتری (یعنی مثل Text میشه)
    در واقع اگه فیلد از نوع Memo در Group By شرکت کنه دیگه نمیشه بیش از 255 تاش رو دید.

    از دوستان کسی نظری داره؟
    آخرین ویرایش به وسیله niloufar : دوشنبه 14 فروردین 1385 در 19:13 عصر

  3. #3
    کاربر دائمی آواتار meh_secure
    تاریخ عضویت
    دی 1383
    محل زندگی
    California
    پست
    964
    بخاطر سنگین بودن فیلد Memo نمیشه یه سری اعمال رو روش انجام داد. خود SQL Server برای ساختن Index ها محدودیت گذاشته. این که دیگه Access هستش.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    دوباره سلام

    ظاهرا Ado.Net فیلد Memo را ساپورت میکنه اما مشکل از یه جای دیگه بود. کوئری ای که من انجام میدادم دارای Group By بود و وقتی یک فیلد Memo گروپ میشه نمیدونم چرا خود به خود 255 کاراکتری (یعنی مثل Text میشه)
    در واقع اگه فیلد از نوع Memo در Group By شرکت کنه دیگه نمیشه بیش از 255 تاش رو دید.

    از دوستان کسی نظری داره؟
    کار ADO.NET کاملا درست است.
    شما میخواهید فیلد Memo رو که بیش از 255 کاراکتر است رو GROUP BY کنید؟
    بنظرم کوئریتونو اشتباه نوشتید. چون GROUP BY برای فیلدهایی عددی و نیز فیلدهای کوتاه، معمولا انجام میشه.

    در پناه حق موفق باشید و پرتوان

  5. #5
    کاربر دائمی آواتار meh_secure
    تاریخ عضویت
    دی 1383
    محل زندگی
    California
    پست
    964
    حامد جان کاملا با نظرت موافقم. بهتره که ما تو کارهامون یه سری استانداردها رو رعایت کنیم.

  6. #6
    سلام
    1- البته تجربه من از همه دوستان کمتره
    2- آقای محمدی کوئری که غلط نیست فرض کن یکی از فیلدهای جدول Master از نوع Memo است و می خواهیم آن را در کنار مثلا تعداد رکوردهای جدول Detail که به هر یک از این رکوردها ربط دارد نمایش دهیم (مثلا برای دادن پیام مبنی بر نیاز به Cascade Delete در هنگام Delete و ...) مسلما اگه فیلدمون Memo نبود باید از Group By استفاده میکردیم. حال اینکه با فیلد Memo (که به قول دوستمون سنگینه) نمیشه این کار را کرد و باید دو کوئری جدا بزنیم یه حرف دیگه ایه...
    3- حالا خارج از اینکه این MsAccess یا حتی به قول دوستمون SqlServer (چون من امتحان نکردم) نمیتونن این کار را بکنن یا به خاطر سنگینی اون صلاح نمیدونن، این استاندارد که نباید این کار رو کرد از کجا اومده؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    2- آقای محمدی کوئری که غلط نیست
    من منظورم ساختار دیتابیست بود که مجبور شدی یک فیلد Memo رو GROUP BY کنی.
    نقل قول نوشته شده توسط niloufar
    فرض کن یکی از فیلدهای جدول Master از نوع Memo است و می خواهیم آن را در کنار مثلا تعداد رکوردهای جدول Detail که به هر یک از این رکوردها ربط دارد
    گفتم که طراحی دیتابیست احتمالا اشتباست چون هیچ موقع یک فیلد Memo رو PK نمیکنند .

    اگه میخواهی نحوه کار برنامتو همینجا بگو تا اگه بشه دیتابیستو طراحی کنم. البته مجبوری اون موقع پروژه رو از اول بنویسی.

    در پناه حق موفق باشید و پرتوان

  8. #8
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    سلام

    حامد دقیقا درست میگه . معمولا GROUP BY را با کلیدهای اصلی میزنند . حتی اگر بخواهید اطلاعات یک جدول رو در کنار اطلاعات جدول دیگه ای بیارید باید از کلید اصلی دو جدول استفاده کنید .
    یا در مورد کوئری اشتباه میکنی و یا اینکه ساختار جدولت مشکل داره . شخصا احتمال اولی رو قویتر میدونم . چون مطمئنا شما فیلد Memo رو کلید اصلی نکردید .

  9. #9
    سلام
    1- آقای محمدی، اگه یه ذره از حافظتون بیشتر استفاده کنید و یه ذره سابقه من را (که البته مسلما از همه کمتره) لااقل تو این فروم و فروم خدابیامرز VB6 به یاد بیارید، بعید می دونم دیگه هر چه قدر هم کوچیک فرضم کنید، بازم بگید احتمالا فیلد Memo را PK گرفته اید :- ( همانطور که آقای عابدی جو فکر کنم بیشتر یادشون بوده و گفته اند: "چون مطمئنا شما فیلد Memo رو کلید اصلی نکردی"
    2- اما بریم سراغ توضیح چیزی که میخوایم بهش برسیم. نیازی هم به بانک ما نیست که بخوایم به هم بریزیمش، همین الان یه بانک میسازیم:
    الف - یه جدول داریم که توش اطلاعات کتابها رو ریختیم. اسمشو میذاریم Books که خیلی چیزا داره. یکیش همون BookId باشه که شما خودتون اینو PK بگیرید و نام کتاب و خیلی چیزای دیگه. یکیش هم فیلد Comment باشه که از نوع Memo است و قراره توضیحاتی در مورد هر کتاب (که البته بیش از 255 کاراکتره) توش ریخته بشه (ما هم بخاطر شما اینو یه وقت PK نمیگیریم).
    ب - یه جدول هم داریم مثلا به نام BookIndexes که توش قراره فهرست کتابها و اطلاعات اون (مثل BookIndexId که شما PK میگیریدش و BookId که شما FK میگیرید و عنوان هر فهرست و ترتیبش و والدش و ...
    ج - حالا میخوایم تو یه کوئری (نگید خوب دو کوئریش کن که شاکی میشم چون خودم تو پست های قبل گفتم و شما مرا متهم به PK قرار دادن فیلد Memo کردید) تمام اطلاعات کتاب ها را در کنار تعداد (Sum) فهرست های مرتبط با هر کتاب بگیریم (تا مثلا اونا رو در یه گرید نشون بدیم). شما کوئریش رو بنویسید.
    د- ممنون
    آخرین ویرایش به وسیله niloufar : دوشنبه 21 فروردین 1385 در 17:33 عصر

  10. #10
    کاربر دائمی آواتار MMAASS
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    یه گوشه دنیا
    پست
    231
    نمی دونم !!! شاید درست نباشه من این طوری بپرم وسط بحث.
    اما یه نکته در مورد طراحی دیتابیس ....

    نقل قول نوشته شده توسط niloufar
    الف - یه جدول داریم که توش اطلاعات کتابها رو ریختیم. اسمشو میذاریم Books که خیلی چیزا داره. یکیش همون BookId باشه که شما خودتون اینو PK بگیرید و نام کتاب و خیلی چیزای دیگه. یکیش هم فیلد Comment باشه که از نوع Memo است و قراره توضیحاتی در مورد هر کتاب (که البته بیش از 255 کاراکتره) توش ریخته بشه (ما هم بخاطر شما اینو یه وقت PK نمیگیریم).
    ب - یه جدول هم داریم مثلا به نام BookIndexes که توش قراره فهرست کتابها و اطلاعات اون (مثل BookIndexId که شما PK میگیریدش و BookId که شما FK میگیرید و عنوان هر فهرست و ترتیبش و والدش و ...
    البته این نکته رو که می گم جدا از بحث Memo و مشکلته اما خوب...
    اگه جدول BookIndexes مربوط به موضوعات کتب است فیلد BookIndexId رو باید تو جدول Books به عنوان FK قرار بدی نه اینکه فیلد BookId رو بذاری تو این جدول. ( یعنی یه جورایی به نظر من برعکس عمل کردی )
    اگه هم جدول BookIndexes مربوط به چیزهای دیگس خواهش می کنم بگین چون همون طور که گفتم تاپیک رو دنبال می کنم و دوست دارم کاملا در جریان اون باشم.

    باتشکر

  11. #11
    نقل قول نوشته شده توسط MMAASS
    نمی دونم !!! شاید درست نباشه من این طوری بپرم وسط بحث.
    اما یه نکته در مورد طراحی دیتابیس ....


    البته این نکته رو که می گم جدا از بحث Memo و مشکلته اما خوب...
    اگه جدول BookIndexes مربوط به موضوعات کتب است فیلد BookIndexId رو باید تو جدول Books به عنوان FK قرار بدی نه اینکه فیلد BookId رو بذاری تو این جدول. ( یعنی یه جورایی به نظر من برعکس عمل کردی )
    اگه هم جدول BookIndexes مربوط به چیزهای دیگس خواهش می کنم بگین چون همون طور که گفتم تاپیک رو دنبال می کنم و دوست دارم کاملا در جریان اون باشم.

    باتشکر
    سلام
    اگه یه کم دقت کنید میبینید که یه کتاب میتونه n تا فهرست کتاب داشته باشه. درواقع رابطه بین کتاب به اندیس، رابطه یک به n است. لذا اگه به قول شما BookIndexId رو در جدول Books به عنوان یه فیلد بذاریم، این یعنی رابطه دقیقا برعکس. ولی اگر BookId رو در BookIndexes بگذاریم یعنی می توانیم n رکورد داشته باشیم (در جدول فهرست) که یک کتاب باشند اما مشخصات فهرستشان متفاوت باشد...

  12. #12
    خوب بالاخره کوئری ما چی شد!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    یکی میخواد بدون استفاده از Group By بنویسه و ما هم یاد بگیریم(دوستانی که ...) یا خودم با Group Byش رو بنویسم و یه نتیجه گیری اخلاقی هم تهش بندازیم و تاپیک رو خاتمه بدیم!!!!!

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام

    خودتون از این جمله چیزی میفهمید:
    نقل قول نوشته شده توسط niloufar
    اگه یه کم دقت کنید میبینید که یه کتاب میتونه n تا فهرست کتاب داشته باشه.
    نقل قول نوشته شده توسط niloufar
    الف - یه جدول داریم که توش اطلاعات کتابها رو ریختیم. اسمشو میذاریم Books که خیلی چیزا داره. یکیش همون BookId باشه که شما خودتون اینو PK بگیرید و نام کتاب و خیلی چیزای دیگه. یکیش هم فیلد Comment باشه که از نوع Memo است و قراره توضیحاتی در مورد هر کتاب (که البته بیش از 255 کاراکتره) توش ریخته بشه (ما هم بخاطر شما اینو یه وقت PK نمیگیریم).
    ب - یه جدول هم داریم مثلا به نام BookIndexes که توش قراره فهرست کتابها و اطلاعات اون (مثل BookIndexId که شما PK میگیریدش و BookId که شما FK میگیرید و عنوان هر فهرست و ترتیبش و والدش و ...
    ج - حالا میخوایم تو یه کوئری (نگید خوب دو کوئریش کن که شاکی میشم چون خودم تو پست های قبل گفتم و شما مرا متهم به PK قرار دادن فیلد Memo کردید) تمام اطلاعات کتاب ها را در کنار تعداد (Sum) فهرست های مرتبط با هر کتاب بگیریم (تا مثلا اونا رو در یه گرید نشون بدیم). شما کوئریش رو بنویسید.
    منظورت از فهرست کتابها چیه؟
    میتونی Diagram این دو جدولتو اینجا قرار بدی (خیلی کلی توضیح دادی).

    در پناه حق موفق باشید و پرتوان

  14. #14
    نقل قول نوشته شده توسط Hamedm
    سلام

    خودتون از این جمله چیزی میفهمید:
    نقل قول نوشته شده توسط niloufar
    اگه یه کم دقت کنید میبینید که یه کتاب میتونه n تا فهرست کتاب داشته باشه.
    نقل قول نوشته شده توسط Hamedm
    منظورت از فهرست کتابها چیه؟
    میتونی Diagram این دو جدولتو اینجا قرار بدی (خیلی کلی توضیح دادی).
    سلام
    چیز عجیبیه؟!
    دو تا جدول بکشید تو یه کاغذ. اسم یکیش Books اسم یکیش BookIndexes
    اولی شامل این فیلدها باشه: BookId و BookName و BookAuthor و ... و BookComment که اولی از نوع AutoNumber و آخری Memo و بقیه Text.
    جدول دومی هم شامل این فیلدها باشه: BookIndexId و BookId و BookIndexName و ... که اولی ازنوع AutoNember و دومی Number و سومی Text
    یه Relation هم بین BookId های دو جدول بکشید (یک به n از Books به سوی BookIndexes)

    حالا:
    جدول اول مشخصات کتاب های سیستم رو وارد میکنیم. اما میدونیم که هر کتابی رو باز کنید یه چند صفحه ای داره به نام "فهرست" 10تا 20تا یا Nتا از این فهرست ها داریم که برای هر کتاب میخوایم با ذکر Id اون کتاب، هر کدوم از این Nتا فهرست در یه رکورد از جدول BookIndexes ذخیره شوند (حال معلوم شد منظور از "اگه یه کم دقت کنید میبینید که یه کتاب میتونه n تا فهرست کتاب داشته باشه" چیه؟!)

    خوب:
    حالا میخوایم همانطور که گفتم لیست کتابها و تعداد فهرستهای هر کتاب رو در یه Query تحویل بگیریم (آقا شهریار هم دیدم تو یه تاپیک دیگه یه همچین چیزی رو خواسته بودند، نمیدونم به اینجا ربط داشته یا نه!!)

    همین.
    دوستان دیگه هم اگه نظری در مورد بحث "علمی" در این تاپیک دارن، خوشحال میشیم وارد بحث شوند.
    آخرین ویرایش به وسیله niloufar : شنبه 19 فروردین 1385 در 18:11 عصر

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    حتی دوستی گفت که "گفتم که طراحی دیتابیست احتمالا اشتباست چون هیچ موقع یک فیلد Memo رو PK نمیکنند" و من تا این حد پایین آمدم (هر چند خود را پایین تر از همه دوستان میدونم)
    (منظورش منم )
    ببین این حرفو من به هیچ نیتی نگفتم من فقط قصد کمک داشتم (من اگه نیتی جز کمک به دیگران داشتم که با این همه کار روزی nبار به این سایت سر نمیزدم. من که بیکار نیستم. یکی میگفت حامد تو که این قدر به این سایت سر میزنی، حتما خیلی وقت خالی داری (دیگه به این آدم چی میشه گفت...))اصلا انتظار نداشتم از حرفم ناراحت بشید. ببین در یادگیری باید پررو بود. اگه از در انداختند بیرون باید از پنجره وارد بشی (من خودم برای یادگیری خیلی پررو هستم، حتی حاضرم بهم توهین بشه ولی به اون پاسخی که دنبالشم برسم).

    ولی بهر حال عذرخواهی منو بپزیرید.


    نقل قول نوشته شده توسط niloufar
    حالا:
    جدول اول مشخصات کتاب های سیستم رو وارد میکنیم. اما میدونیم که هر کتابی رو باز کنید یه چند صفحه ای داره به نام "فهرست" 10تا 20تا یا Nتا از این فهرست ها داریم که برای هر کتاب میخوایم با ذکر Id اون کتاب، هر کدوم از این Nتا فهرست در یه رکورد از جدول BookIndexes ذخیره شوند (حال معلوم شد منظور از "اگه یه کم دقت کنید میبینید که یه کتاب میتونه n تا فهرست کتاب داشته باشه" چیه؟!)

    خوب:
    حالا میخوایم همانطور که گفتم لیست کتابها و تعداد فهرستهای هر کتاب رو در یه Query تحویل بگیریم (آقا شهریار هم دیدم تو یه تاپیک دیگه یه همچین چیزی رو خواسته بودند، نمیدونم به اینجا ربط داشته یا نه!!)
    باید دوتا SELECT تو در تو بنویسی. همین.
    SELECT بیرونی برای اطلاعات کتاب، SELCET درونی هم برای محاسبه تعداد (COUNT) رکوردهایی که با PK جدول Books در ارتباط هستند.
    همین

    در پناه حق موفق باشید و پرتوان
    آخرین ویرایش به وسیله Hamedm : یک شنبه 20 فروردین 1385 در 16:49 عصر

  16. #16
    کاربر دائمی آواتار MMAASS
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    یه گوشه دنیا
    پست
    231
    نقل قول نوشته شده توسط niloufar
    دوستان دیگه هم اگه نظری در مورد بحث "علمی" در این تاپیک دارن، خوشحال میشیم وارد بحث شوند.
    با اجازه ...

    نقل قول نوشته شده توسط niloufar
    جدول اول مشخصات کتاب های سیستم رو وارد میکنیم. اما میدونیم که هر کتابی رو باز کنید یه چند صفحه ای داره به نام "فهرست" 10تا 20تا یا Nتا از این فهرست ها داریم که برای هر کتاب میخوایم با ذکر Id اون کتاب، هر کدوم از این Nتا فهرست در یه رکورد از جدول BookIndexes ذخیره شوند
    منظورتون از "فهرست" همون "فهرست مندرجات کتاب" است؟
    اگه آره :
    آخه واسه چی فهرست کتب رو تو بانک ذخیره می کنی؟ آخه به چه درد می خوره؟

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام

    جناب نیلوفر ازتون خبری نیست، مشکلتون حل شد؟

    در پناه حق موفق باشید و پرتوان

  18. #18
    سلام
    نقل قول نوشته شده توسط Hamedm

    ولی بهر حال عذرخواهی منو بپزیرید.
    خواهش میکنم!!
    نقل قول نوشته شده توسط Hamedm
    باید دوتا SELECT تو در تو بنویسی. همین.
    SELECT بیرونی برای اطلاعات کتاب، SELCET درونی هم برای محاسبه تعداد (COUNT) رکوردهایی که با PK جدول Books در ارتباط هستند.
    فرمایش شما کاملا منطقیه و من هم الان همین کار رو انجام میدم. اما قرار بود با یه select این کار را انجام بدیم که در اونصورت نیاز به Group By پیدا میکردیم. توجه داریم که ایجاد دو کوئری نسبت به یه کوئری در سرعت اجرا تاثیر گذار میباشد. بازم توجه داریم که با ایجاد SubQuery و یا Query های حلقه ای در هر دو صورت باعث کندتر شدن عملیات می شویم که همین باعث شده بود که ابتدا بخواهم آنها را طی یک کوئری پیاده سازی کنم که با آن مشکل برخوردم. در واقع اگر فیلد Memo نبود منطقی ترین راه (پر سرعت ترین راه) استفاده از Group By بود
    بازم ممنون و اگه شما هم (یا خصوصا آقای عابدی جو به دلایل نامعلوم) و یا دیگر دوستان از من ناراحت شدید بنده هم عذرخواهی میکنم
    آخرین ویرایش به وسیله niloufar : یک شنبه 20 فروردین 1385 در 18:01 عصر

  19. #19
    کاربر دائمی آواتار MMAASS
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    یه گوشه دنیا
    پست
    231
    پس جواب من چی شد؟
    مثل اینکه من یه سوال پرسیده بودم.

  20. #20
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    دوست عزیز نیلوفر سلام

    ببین اینکه میخوای لیست فهرستها را در یک رکورد داشته باشی به نظر من جالب نیست و فکر کنم نشدنیه . آخه از اونجایی که لیست هر کتاب ممکنه متفاوت باشه نمیشه که در یک کوئری رکوردهای با طول متفاوت داشته باشه . شما به نظر من این کار رو بکن . یک InnerJoin بزن . و ابتدا تمامی اطلاعات هر کتاب به همرا فهرست اونا رو یک جا جمع کن . ( مثلا یک جدول موقت )
    اگر لازمه تا دستور InnerJoin رو هم بنویسم .

  21. #21
    نقل قول نوشته شده توسط MMAASS
    پس جواب من چی شد؟
    مثل اینکه من یه سوال پرسیده بودم.
    سلام
    منظور از سوال شما اینه؟

    منظورتون از "فهرست" همون "فهرست مندرجات کتاب" است؟
    اگه آره :
    آخه واسه چی فهرست کتب رو تو بانک ذخیره می کنی؟ آخه به چه درد می خوره؟
    اگه بله، باید عرض کنم که این بستگی به کار بنده و شما داره که چه چیزهایی را باید ذخیره کنیم. این هم یه مثال ساختگی بود تا در مورد موضوع روش بحث کنیم. اما چیز عجیب و غریبی هم نیست، مثلا فرض کنید قراره با انتخاب هر عنوان کتاب، فهرست اون در یه TreeView نمایش داده بشه تا کاربر هر کدومشو که انتخاب کرد، متن اونو ببینه. در اینصورت دیگه برنامه نمیتونه بره و اصل کتب را باز کنه و ازش اطلاعات در بیاره، مجبوره یه جایی (مثل همین بانک یا XML File یا ...) اینا رو نگداری کنده تا موقع لزوم بارگذاریشون کنه.

  22. #22
    نقل قول نوشته شده توسط habedijoo
    دوست عزیز نیلوفر سلام

    ببین اینکه میخوای لیست فهرستها را در یک رکورد داشته باشی به نظر من جالب نیست و فکر کنم نشدنیه . آخه از اونجایی که لیست هر کتاب ممکنه متفاوت باشه نمیشه که در یک کوئری رکوردهای با طول متفاوت داشته باشه . شما به نظر من این کار رو بکن . یک InnerJoin بزن . و ابتدا تمامی اطلاعات هر کتاب به همرا فهرست اونا رو یک جا جمع کن . ( مثلا یک جدول موقت )
    اگر لازمه تا دستور InnerJoin رو هم بنویسم .
    سلام
    اگه منظورتون از "اینکه میخوای لیست فهرستها را در یک رکورد داشته باشی به نظر من جالب نیست" همون سوال دوستمونه که در اینصورت در پست قبلی جواب دادم.
    اما اگه منظورتون به قرینه "فکر کنم نشدنیه. آخه از اونجایی که لیست هر کتاب ممکنه متفاوت باشه نمیشه که در یک کوئری رکوردهای با طول متفاوت داشته باشه" اینه که نمیشه اونا رو با هم گرفت چون مثلا هر رکورد از جدول Books شامل N تا رکورد از جدول BookIndexes است، خوب باید عرض کنم که اصلا و اساسا و نمیدونم دیگه چی چیا این Group By بنده خدا را برای همین ساخته اند که اگه مثل صورت مساله ما یه Master-Detail داشتیم (که قائداتا باید یک به n هم باشه) و خواستیم هر رکورد از جدول Master را با یه Expersion از جدول Detail (مثل Sum, Qount, ...) ببینیم بیایم و فیلدهای مورد نیاز جدول Master را Group By کنیم و در کنار اون Expersion شده رکوردهای متناسب از جدول Detail (که با اون رابطه ریاضی الان اون هم یه رکوردی شده) کنار هم نشون بدیم
    این یه راهشه و یه راه دیگش هم استفاده از دو کوئری است (یا همون SubQuery) که میاد و به ازای هر رکورد یه بار یه نیمچه Selectای انجام میده تا یه جوابکی (البته باز یه تک رکوردی) تحویل بگیره و کنار فیلدهای دیگه نشون بده.
    پس اصلا نشدنی نیست و اتفاقا Nتا راه داره که دوتاش رو عرض کردم. اصل و اساس این تاپیک هم سر نشدنش شکل نگرفت. بلکه سر این بود که اگه یکی از فیلدهایی که قراره تو Group By شرکت کنند از نوع Memo بود، فقط 255 کاراکتر اول تحویل گرفته میشد که مجبورم کرد برم و از راه دوم استفاده کنم.
    ممنون

  23. #23
    راستی! ممنون Inner join هم بلدم :- (
    اگه میخواید من هر دو کوئری رو (با روش اول و دوم) بنویسم تا نتیجه تاپیک بشه (البته اگه دوستان نظر دیگه ای ندارند)

  24. #24
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    فکر کنم مثالت یک کمی منو گیج کرد . به خاطر همین هم ممکنه جواب بی ربط داده باشم . به هر حال اگر بتونی یه نمایی از بانک واقعیت رو بزاری و کوئری هات رو هم بنویسی که مرجع خوب بشه واسه دیگران

    با تشکر

  25. #25
    نقل قول نوشته شده توسط habedijoo
    فکر کنم مثالت یک کمی منو گیج کرد . به خاطر همین هم ممکنه جواب بی ربط داده باشم . به هر حال اگر بتونی یه نمایی از بانک واقعیت رو بزاری و کوئری هات رو هم بنویسی که مرجع خوب بشه واسه دیگران

    با تشکر
    سلام
    چرا سخت میگیرید. من نمی فهمم کجای مباحث مفهوم نیست!! این یه دیاگرام از اون مثال:
    عکس های ضمیمه عکس های ضمیمه

  26. #26
    اینم کوئری از طریق Group By:

    SELECT Books.BookId, Books.Name, Books.Author, Books.Comment, Count(BookIndexes.BookId) AS CountOfBookId
    FROM Books LEFT JOIN BookIndexes ON Books.BookId = BookIndexes.BookId
    GROUP BY Books.BookId, Books.Name, Books.Author, Books.Comment

  27. #27
    و اینم کوئری از طریق SubQuery:

    SELECT books.BookId, books.Name, books.Author, books.Comment, SubQuery.BookIndexesCount
    FROM books INNER JOIN
    [SELECT Books.BookId, Count(BookIndexes.BookIndexId) AS BookIndexesCount FROM Books LEFT JOIN BookIndexes ON Books.BookId = BookIndexes.BookId GROUP BY Books.BookId]. AS SubQuery
    ON books.BookId = SubQuery.BookId

  28. #28
    روشون یه کمی فکر کنید ایشاالله هر دوشونو متوجه میشید. بازم اگه نشد بفرمایید تا هرجاش ابهام بود توضیح دهم

    موفق باشید و به قول آقای محمدی پرتوان

  29. #29
    سلام
    جدا یه نفر از افرادی که تو این بحث بودند، نظری موافق یا مخالف، اشکال، یا هر چیز دیگه ای نداره!!!!!!!

  30. #30
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    اینم کوئری از طریق Group By:

    SELECT Books.BookId, Books.Name, Books.Author, Books.Comment, Count(BookIndexes.BookId) AS CountOfBookId
    FROM Books LEFT JOIN BookIndexes ON Books.BookId = BookIndexes.BookId
    GROUP BY Books.BookId, Books.Name, Books.Author, Books.Comment
    این کوئری کاملا درسته و بهتر از کوئری زیر است.
    نقل قول نوشته شده توسط niloufar
    و اینم کوئری از طریق SubQuery:

    SELECT books.BookId, books.Name, books.Author, books.Comment, SubQuery.BookIndexesCount
    FROM books INNER JOIN
    [SELECT Books.BookId, Count(BookIndexes.BookIndexId) AS BookIndexesCount FROM Books LEFT JOIN BookIndexes ON Books.BookId = BookIndexes.BookId GROUP BY Books.BookId]. AS SubQuery
    ON books.BookId = SubQuery.BookId
    در پناه حق موفق باشید و پرتوان

  31. #31
    سلام
    آقای محمدی خوشحالم که در ته ته تاپیک به سر سر تاپیک برگشتیم :- )
    آخه همون زمانها که یادش بخیر هم بنده عرض کردم که باید از Group By استفاده کنیم و بهتره و شما فرمودید: بیکلاس!! آخه کسی فیلد Memo رو PK میکنه (که البته ما هیچ وقت از این غلطا نمیکنیم، یا لااقل غلط به این افتضاحی دیگه نمکنیم).
    بی خیال.
    فرمایش شما کاملا صحیحه. بنده هم اول همون نظر رو داشتم. فقط وقتی دیدم فیلد Memo در Group By تبدیل میشه به Text ساده 255 کاراکتری، مجبور شدم از راه دوم را پیشنهاد کنم تا هم جواب بگیرم و هم اطلاعات از بین نره.

  32. #32
    راستی، ممنون که اظهار نظر کردید. کلی حالم گرفته بود که اینهمه پست تو این تاپیک رد و بدل شد، هیشکی تو نتیجه تاپیک اظهاری از نظر نکرد :- (

  33. #33
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    آخه همون زمانها که یادش بخیر هم بنده عرض کردم که باید از Group By استفاده کنیم و بهتره و شما فرمودید: بیکلاس!! آخه کسی فیلد Memo رو PK میکنه (که البته ما هیچ وقت از این غلطا نمیکنیم، یا لااقل غلط به این افتضاحی دیگه نمکنیم)
    من الان هم میگم کسی MEMO رو GROUP BY نمیکنه.

    ببین گروپ کردن بخاطر 2منظور استفاده میشه:
    1. GROUP BY بخاطر استفاده از Aggregate Function
    2. GROUP BY بخاطر دسته بندی کردن رکوردها
    من فکر کردم جنابعالی منظورتون مورد دومی است.


    در پناه حق موفق باشید و پرتوان

  34. #34
    سلام
    بازم ممنون. ولی:

    نقل قول نوشته شده توسط hamedm
    من الان هم میگم کسی MEMO رو GROUP BY نمیکنه.
    البته این کاملا فرق داره با:
    نقل قول نوشته شده توسط hamedm
    هیچ موقع یک فیلد Memo رو PK نمیکنن
    ضمن اینکه بنده هم کوئری دوم را بر پایه همین که "فیلد Memo را نمیشه Group By کرد" نوشتم (که البته نباید با "فیلد Memo را نمیشه PK کرد" خلطش کرد)

    بازم ممنون

  35. #35
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام
    نقل قول نوشته شده توسط niloufar
    سلام
    بازم ممنون. ولی:


    البته این کاملا فرق داره با:


    ضمن اینکه بنده هم کوئری دوم را بر پایه همین که "فیلد Memo را نمیشه Group By کرد" نوشتم (که البته نباید با "فیلد Memo را نمیشه PK کرد" خلطش کرد)

    بازم ممنون
    من DESING دیتابیسو بصورت تخصصی پیش اساتید این زمینه یادگرفتم. الآن هم میگم، هرگز فیلد MEMO رو PK نمیکنند. اگه باورتون نمیکنید، مشابه همین سوال رو در بخش SQL SERVER از آقای ثباتی بپرسید تا خود ایشون به شما توضیح بدند.
    البته میشه PK در نظر گرفت ولی طبق اصول طراحی دیتابیس این کار اشتباه است (امیدوارم دیگه بهتون برنخوره که میگم اشتباهه).


    در پناه حق موفق باشید و پرتوان

  36. #36
    نقل قول نوشته شده توسط Hamedm
    سلام
    من DESING دیتابیسو بصورت تخصصی پیش اساتید این زمینه یادگرفتم. الآن هم میگم، هرگز فیلد MEMO رو PK نمیکنند. اگه باورتون نمیکنید، مشابه همین سوال رو در بخش SQL SERVER از آقای ثباتی بپرسید تا خود ایشون به شما توضیح بدند.
    البته میشه PK در نظر گرفت ولی طبق اصول طراحی دیتابیس این کار اشتباه است (امیدوارم دیگه بهتون برنخوره که میگم اشتباهه).


    در پناه حق موفق باشید و پرتوان
    سلام
    آقای محمدی
    1- بنده بهم هیچوقت بر نمیخوره که اشتباه کرده باشم، چون خودم باورمه که هنوز هیچی بلد نیستم. بلکه اگه بازم یکی بهم بگه "الآن هم میگم، هرگز فیلد MEMO رو PK نمیکنند" بهم برمیخوره. بنده که عرض کردم دیگه انقدر گیج تشریف ندارم که فیلد Memo رو Pk کنم!!!!!
    2- حالا که شما طراحی (همون فارسی رو پاس بداریم Design) رو تخصصا یاد گرفتید، ان شاء الله ما هم از کمک های شما بهره خواهیم برد.
    3- بنده هم تو کل این تاپیک عرض نکردم باید فیلد Memo رو Pk کرد که حالا بخوام از اساتید بپرسم میشه یا نه (اونم وقتی خودم میدونم منطقی نیست این کار رو کرد) بلکه فقط میخواستم یه Group By ساده (به همون دلایل که 4 صفحه در موردش بحث کردم: اینو گفتم که دوباره نگید نباید Goup By کرد که عرض کنم حتی کوئری بدون Group Byش رو هم تو همین تاپیک نوشته ام) بزنم که فهمیدم برای فیلد بالای 255 کاراکتر حضرات RDBMS انجامش نمیدن و لذا رفتیم سراغ کوئری دومی که توضیحش قبلا آمد.
    4- امیدواریم همیشه از حضور علمی شما در این تالار سود ببریم.

  37. #37
    سلام
    برای محاسبه یک فیلد که اطلاعاتش از فیلدهای دیگر است چه کار باید کرد ؟

تاپیک های مشابه

  1. گنجوندن فیلد Memo تو دیتا گرید
    نوشته شده توسط yavari در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: چهارشنبه 02 فروردین 1385, 20:39 عصر
  2. مرتب کردن نوشته های memo
    نوشته شده توسط Tarrah در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: جمعه 12 اسفند 1384, 11:05 صبح
  3. Shell execute in msaccess query
    نوشته شده توسط houtanal در بخش Access
    پاسخ: 4
    آخرین پست: یک شنبه 28 فروردین 1384, 07:52 صبح
  4. پاسخ: 3
    آخرین پست: شنبه 16 خرداد 1383, 14:00 عصر
  5. How can I create MSAccess and Oracle databases with database
    نوشته شده توسط رضا عربلو در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 7
    آخرین پست: پنج شنبه 17 اردیبهشت 1383, 10:06 صبح

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

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