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

نام تاپیک: بازیابی اطلاعات به صورت پیچیده

  1. #1

    بازیابی اطلاعات به صورت پیچیده

    سلام.
    فرض کنید سه تا جدول به نامهای A و B و C داریم:

    A B C
    --- ---- -----
    a1 b1 c1
    a2 a1(F.K) c2
    c1(F.K) c1
    ... ... ...

    a1,b1,c1 جدولها هستند.
    فرض کنید a2 هم کلید خارجی است(مربوط به جدول دیگه)
    حالا میخوام کوئری بنویسم که کلیه رکوردهای جدول A که مربوط به کلید خارجی a2 است به همراه رکوردهایی از جدول B که مربوط به a1 است و مقادیر مربوطه از جدول C را بازیابی کنم.

    لازم به ذکر است که هر رکورد از جدول A با n رکورد از جدول B در ارتباط است.
    رکوردهای مربوط به کلید خارجی a2 در جدول A نیز n تاست.

    ممنون میشم راهنماییم کنید.

  2. #2
    خواهش می کنم راهنماییم کنید.
    متشکرم.

  3. #3
    سلام.شما باید بین جداولتون از join استفاده کنید.

    select a.* ,b.*,c.* from table1 as a inner join table2 as b
    ob a.id=b.id inner join table3 as c on a.id=c.id

    این کدی که نوشتم رکوردها رو بازیابی میکنه از 3 جدول که id های آنها باهم برابر باشه.
    اینو میتونی روی جداول خودت تعمیم بدی.

  4. #4
    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام.شما باید بین جداولتون از join استفاده کنید.

    select a.* ,b.*,c.* from table1 as a inner join table2 as b
    ob a.id=b.id inner join table3 as c on a.id=c.id

    این کدی که نوشتم رکوردها رو بازیابی میکنه از 3 جدول که id های آنها باهم برابر باشه.
    اینو میتونی روی جداول خودت تعمیم بدی.
    جناب صادقیان ممنون از اینکه لطف کردید جواب دادید.
    کددی که شما نوشتید الحاق معمولی روی سه جدول است. اما با توجه به توضیحاتی که بنده دربالا دادم مشکلم با این کوئری که شما نوشتید حل نماصلا شزایط مسئله فرق می کنه.

  5. #5
    سه جدول شما به چه فیلدهایی به هم ربط دارند؟ باید از طریق یک کلید باشه درسته؟
    یعنی در جدول a اگر فرض کنیم جدول اصلی شماست با جدول b,c که احتمالا زیر مجموعه جدول a هستند براساس یک کلید باهم ارتباط دارند. درسته؟
    اگر به این شکل هست کدی که نوشتم باید مشکل شما رو حل کنه.
    اگر اینطوری نیست بتونید بیشتر توضیح بدید بهتره.

  6. #6
    من مجددا امتحان کردم جواب نداد.
    میدونید چرا جواب نمیده؟ چون در جدولA نمیخوام رکوردها رو بر اساس کلید اصلی برام برگردونه. میخوام رکوردها رو بر اساس کلید خارجی برگردونم که تعدادشان n رکورد است. حالا هر یک از این رکوردها ، خودشون با nرکورد از جدول B ارتباط دارن.
    با اون کدی که شما نوشتید فقط یک رکورد از جدول A به همراه رکوردهای مرتبط از جدول B نشون داده میشن. اما من میخوام کلیه رکوردها از جدول A در خروجی باشند

  7. #7
    کاربر دائمی آواتار Elham_gh
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    Tehran
    سن
    48
    پست
    718
    نقل قول نوشته شده توسط resident مشاهده تاپیک
    من مجددا امتحان کردم جواب نداد.
    میدونید چرا جواب نمیده؟ چون در جدولA نمیخوام رکوردها رو بر اساس کلید اصلی برام برگردونه. میخوام رکوردها رو بر اساس کلید خارجی برگردونم که تعدادشان n رکورد است. حالا هر یک از این رکوردها ، خودشون با nرکورد از جدول B ارتباط دارن.
    با اون کدی که شما نوشتید فقط یک رکورد از جدول A به همراه رکوردهای مرتبط از جدول B نشون داده میشن. اما من میخوام کلیه رکوردها از جدول A در خروجی باشند
    سواتونو خیلی گنگ مطرح کردید.
    اگر A دارای فیلدهای a1,a2 باشد , B دارای b1,b2,a2 که a2 در B کلید باشد و در A کلید خارجی:

    SELECT A.*,B.*
    FROM A RIGHT OUTER JOIN B ON A.a2=B.a2

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

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