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

نام تاپیک: یک سوال در مورد join دو تا جدول

  1. #1

    یک سوال در مورد join دو تا جدول

    سلام به همگی.

    من یه مشکلی با join دو تا جدول دارم لطفا اگه میتونید حلش کنید.

    جدول اول : شامل اطلاعات سخت افزاری

    _h_id _ h_name________ _ h_model _____ h_pc_code_
    ________ CPU ___________ _ AMD _ _____ _ 124 _ __
    ________ Motherboard ____ __ Gigabyte_____ _ 124 __ _
    ________ RAM__________ _ _ King Stone___ __ 124 _____
    ________ Hard Disk______ _ _ Maxtor______ __ 124 _ _ _


    جدول دوم : شامل اطلاعات نرم افزاری


    _s_id _ s_name_____ _ s_pc_code_
    _______ office _______ _ 124 _ _
    _______ photoshop____ __ 124 _ _


    دستور join:
    SELECT h_name,h_model,s_name
    FROM
    hardware JOIN software
    ON
    hardware.h_pc_code = software.s_pc_code
    ... =where s_pc_code
    خروجی:
    (با فیلد pc_code ، با هم join شدن)

    _______________________________________________
    ______h_name__________ h_model________ _ s_namel
    __________ CPU ____________ _ AMD _______________office
    ___________Motherboard __ __ Gigabyte_____________office
    ___________ RAM__________ ___ King Stone __________office
    ___________Hard Disk______ ___ Maxtor______________office
    _______ CPU ___________ _ AMD________________photoshop
    _______ Motherboard ____ Gigabyte_____________photoshop
    ________RAM____________ King Stone___________photoshop
    ________Hard Disk________ Maxtor______________photoshop


    اما اینجا طبیعیه که ستون s_name داره تکرار میشه، که من اینو نمیخام، یعنی میخوام یه چیزی بشه مثل شکل زیر:

    ________ h_name__________ h_model________ _ s_namel
    ___________ CPU _____________ _ AMD _______________office
    ________Motherboard __ ___ Gigabyte_____________photoshop
    ___________________________ RAM__________ ____ King Stone
    ______________________________Hard Disk______ ____ Maxtor
    یعنی یه جورایی ستون s_name تکرار نشه و بقیه اش NULL باشه.

    من خودم فکر میکنم مشکل از طراحی جدول هام باشه، اما فعلا چیزی به ذهنم نمیرسه، اگه پیشنهادی دارین بفرمائید، اگه توضیحم کامل نیست بفرمائید تا بیشتر توضیح بدم.
    ممنون.

  2. #2

    نقل قول: یک سوال در مورد join دو تا جدول

    سلام،
    شما می توانید نتیجه ی دلخواهتان را هنگامی که pc_code های مختلف در دو جدول درج شده اند به نمایش بگذارین؟
    مثلا در جدول اول 5 سطر با کد 124، 3 سطر با کد 125 و در جدول بعدی 2 سطر با کد 124 و 6 سطر با کد 125، و همچنین کدهایی را در دو جدول درج کنید که در جدول دیگری موجود نباشد.

    من فکر می کنم بدونم نتیجه ی دلخواه شما با این داده ها چه خواهد بود ولی این نتیجه منطقی نیست. و احتمالا برای اینکه بخواهم کوئری بنویسم لطفا بگویید در چه نسخه ای می خواهین کوئری بگیرین؟
    وبلاگ من (Advanced SQL Querying)

  3. #3

    نقل قول: یک سوال در مورد join دو تا جدول

    سلام، مرسي msalim

    ببخشيد ولي اين روشي كه ميگي يه جورايي غير منطقي به نظر نمياد؟
    بحث فقط كوئري گرفتن نيست، بانك هم بايد درست طراحي شده باشه.
    من با sql server 2005 كار مي كنم.
    ميخوام نتيجشو با crystal report نشون بدم.
    حالا گذشته از فيلد هاي جدول و join بالا، اگه خودتون بخواهيد دو تا جدول طراحي كنيد
    و نتيجه دلخواه بالا رو بگيريد، چه كار ميكنيد؟

    ممنون كه وقت گذاشتيد.

  4. #4

    نقل قول: یک سوال در مورد join دو تا جدول

    سلام
    يكي ميگفت با cursor مشكلت حل ميشه.
    نظري ندارين؟

    مرسي.

  5. #5

    نقل قول: یک سوال در مورد join دو تا جدول

    طراحی جداول یکسری قواعد کلی دارد که باید حتما به آنها توجه کرد.
    مثلا کلید اصلی، کلید خارجی، قیود.
    چیز مهمی که در ارتباط بین جداول وجود دارد ارتباط بین آنهاست. که به یک به یک، یک به چند و چند به چند تقسیم میشن. توصیه می کنم این مقاله را ابتدا بخوانید سپس شروع به کار با جداول بکنید.
    وبلاگ من (Advanced SQL Querying)

  6. #6

    نقل قول: یک سوال در مورد join دو تا جدول

    من همه اين چيزايي رو كه ميگي رو ميدونم. اما همونطور كه تو پست اول گفتم واسه اين مورد چيزي به ذهنم نرسيده.
    با طراحي جدول ها و قواعدشون مشكل ندارم، join هاي زيادي هم تو بانكم دارم، اما رو اين يكي مشكل دارم.
    ميشه يه وقتي بزاري بگي چه كار كنم؟
    وقتش نيست بيشتر از اين معطل بمونم.
    ممنون.

  7. #7

    نقل قول: یک سوال در مورد join دو تا جدول

    اگر می خواهین جواب بگیرین لطفا به پاسخ هایی که مطرح کردم پاسخ بدین مثل این:
    شما می توانید نتیجه ی دلخواهتان را هنگامی که pc_code های مختلف در دو جدول درج شده اند به نمایش بگذارین؟
    مثلا در جدول اول 5 سطر با کد 124، 3 سطر با کد 125 و در جدول بعدی 2 سطر با کد 124 و 6 سطر با کد 125، و همچنین کدهایی را در دو جدول درج کنید که در جدول دیگری موجود نباشد.
    بهتره سطرهای متنوع تری در دو جدول بطور مثال درج کنید و نتیجه را نمایش بدین تا دقیق تر به نتیجه مطلوب پی برد.
    وبلاگ من (Advanced SQL Querying)

  8. #8

    نقل قول: یک سوال در مورد join دو تا جدول

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    اگر می خواهین جواب بگیرین لطفا به پاسخ هایی که مطرح کردم پاسخ بدین مثل این:


    بهتره سطرهای متنوع تری در دو جدول بطور مثال درج کنید و نتیجه را نمایش بدین تا دقیق تر به نتیجه مطلوب پی برد.

    من جواب سوالات رو تو پست شماره 3 دادم. واقعا منظورت اينه كه بيام يه سري داده الكي بريزم تو جدول؟ (اگه نه پس منظورت از "سطر هاي متنوع تر" چيه؟)

  9. #9

    نقل قول: یک سوال در مورد join دو تا جدول

    خب معلومه كه هر دو جدول مقادير مختلفي واسه pc_code دارن، هر كدوم تعداد زيادي pc_code دارن كه تو پست اول فقط 124 رو نوشتم.

  10. #10

    نقل قول: یک سوال در مورد join دو تا جدول

    در جوابي كه تو پست 2 دادي ، فرضت بر اين بوده كه هر دو جدول تعداد سطر هاشون يكي باشه، كه خب طبيعيه كه نيست. مثلا شما فرض كردين هر دو دقيقا 8 سطر دارن، خب تو جدولهاي واقعي من مثلا يكي 50 سطر داره يكي 150 تا.
    فكر كنم حالا بهتر حرف همو ميفهميم (البته اگه بيخيال اين پست نشي)
    ممنون.

  11. #11

    نقل قول: یک سوال در مورد join دو تا جدول

    ابتدا مجبور شدم داده های شما را تعریف کنم تا بتونم کوئری که می نویسم را امتحانش کنم.
    نام جداولتان را با نام های متغیر های جدولی تعویض کنید و کوئری را امتحان کنید. بخش رنگی مد نظرم هست

    declare @t1 table
    (h_id int identity not null primary key,
    h_name varchar(50) not null,
    h_model varchar(50) not null,
    h_pc_code int not null);
    insert into @t1
    select 'CPU','AMD',124 union all
    select 'Motherboard','Gigabyte',124 union all
    select 'RAM','King Stone',124 union all
    select 'Hard Disk','Maxtor',124;
    declare @t2 table
    (s_id int identity not null primary key,
    s_name varchar(50) not null,
    s_pc_code int not null);
    insert into @t2
    select 'office',124 union all
    select 'photoshop',124;
    select *
    from
    (
    select *, rd=row_number() over(partition by h_pc_code order by h_id asc)
    from @t1
    )d1
    full join
    (select *, rd=row_number() over(partition by s_pc_code order by s_id asc)
    from @t2
    )d2
    on d1.h_pc_code=d2.s_pc_code
    and d1.rd=d2.rd

    وبلاگ من (Advanced SQL Querying)

  12. #12

    نقل قول: یک سوال در مورد join دو تا جدول

    msalim خيلي ممنون، شما دقيقا همون چيزي را كه من نياز داشتم نوشتيد. مشكل من هم برطرف شد. بازم ممنون.

  13. #13
    کاربر دائمی آواتار DlphIran
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    استان گرم یزد
    سن
    41
    پست
    231

    نقل قول: یک سوال در مورد join دو تا جدول

    سلام
    من هم همین مشکل (سوال اول تاپیک) رو دارم اما کمی سخت تر، در ضمن از delphi6 و Sql server2000 استفاده می کنم.
    رکوردهای من به این صورت هست:
    رکورد Panel فیلدها: Cod ، Cods ، P ---- رکورد monit فیلدها: Cod ، Cods ، m ----- رکوردsound فیلدها: Cod ، Cods ، s ----- رکورد elctric فیلدها: Cod ، Cods ، e ---- رکورد lok فیلدها: Cod ، Cods ، l

    رکورد Sell فیلدها: Cod ، Dy ، Dm ، Dd

    برای اتصال این جدولها براساس فیلد کلید cod هر روشی که به عقلم رسید انجام دادم اما باز هم فیلدهای تکراری نمایش داده می شه .
    لطفا راهنماییم کنید با تشکر
    آخرین ویرایش به وسیله DlphIran : سه شنبه 17 اسفند 1389 در 13:01 عصر

  14. #14
    کاربر دائمی آواتار DlphIran
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    استان گرم یزد
    سن
    41
    پست
    231

    نقل قول: یک سوال در مورد join دو تا جدول

    اینم نمونه دستوراتی که برای اتصال استفاده کردم:

    with form7.adoquery1 do
    begin
    sql.Clear;
    sql.Add('select top 40 * from sell');
    sql.Add('left outer join panel');
    sql.Add('on sell.cod=panel.cod');
    sql.Add('left outer join monit');
    sql.Add('on sell.cod=monit.cod');
    sql.Add('left outer join sound');
    sql.Add('on sell.cod=sound.cod');
    sql.Add('left outer join elctric');
    sql.Add('on sell.cod=elctric.cod');
    sql.Add('left outer join lok');
    sql.Add('on sell.cod=lok.cod');
    sql.add('order by sell.cod desc');
    active:=true;
    end;

  15. #15
    کاربر دائمی آواتار DlphIran
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    استان گرم یزد
    سن
    41
    پست
    231

    نقل قول: یک سوال در مورد join دو تا جدول

    هنوزم منتظر راهنمایی دوستان هستم

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

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