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

نام تاپیک: جستجوي بيشترين ركورد تكراري

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

    جستجوي بيشترين ركورد تكراري

    سلام

    من از adoquery دلفي6 و از بانك اس كيو ال سرور 2000 استفاده ميكنم.


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

    چطور ميشه ؟ يعني در واقع مي خوايم ليست بانكمون رو براساس يه فيلد كه بيشتر تكرار شده مرتب كنيم تا كمترين تكرار

  2. #2

    نقل قول: جستجوي بيشترين ركورد تكراري

    سلام،
    شما باید یک جدول داشته باشین که مثلا داده های زیر را در آن ذخیره می کنید (مثلا جدول امانات):
    کد کاربر، کد کتاب، تاریخ امانت، تاریخ برگشت، و...

    حالا دو جدول دیگه داریم که مشخصات کتاب و افراد رو ذخیره می کنین.

    برای گزارش گیری در مورد بیشترین کتاب های به امانت رفته باید ابتدا جدول امانات را بر اساس ستون کد کتاب گروه بندی کنین و در لیست ستون ها Count(*) را محاسبه کنین و بر اساس آن مرتب سازی را انجام دهین. سپس برای نمایش مشخصات کتاب نتیجه ی حاصل را با جدول کتابها Join می کنید. همین کار را هم می توانین برای پر کار ترین اعضا استفاده کنید.


    Select * FROM
    (
    Select BookID, COUNT(*) AS c
    FROM Borrows
    Group by BookID
    ) D
    ORDER BY c DESC
    وبلاگ من (Advanced SQL Querying)

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

    نقل قول: جستجوي بيشترين ركورد تكراري

    مشكل اينجاست كه در پنجره جستجو البته در جدول سوابق امانات ، كاربر در حين جستجو ، مثلا محدوده تاريخ مشخص ،ميخواد كتابهايي كه بيشتر امانت گرفته شده اند رو ببينه ،

    در حالت كلي من اينكار رو تا اينجا انجام دادم

    select * from sabegh
    where
    يه عالمه شرط كه در صورت درست بودنش براساس فيلدهاي خاصي جستجو ميشه .
    يكي ازشرطها اينه كه ممكنه كاربر بخواد در اين جستجوهاي تو در تو بياد و ليست كتابهايي كه بيشتر امانت گرفته شده اند رو هم جستجو كنه.

    بعد از اين كار براي ديدن ريز اطلاعات كتاب يا اعضاء ميام و حاصل رو با جدول كتابها يا جدول اعضاء تلفيق ميكنم.
    جستجو ها مشكلي ندارن ،‌فقط مشاهده بيشترين كتابهاي امانت گرفته شده يا اعضاء پركار

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

    نقل قول: جستجوي بيشترين ركورد تكراري

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

  5. #5
    کاربر دائمی آواتار MShirzadi
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    325

    نقل قول: جستجوي بيشترين ركورد تكراري

    فکر کنم کد زیر کارت رو راه بندازه:


    select b.ID,b.name,b.family from tbl1 b left outer join
    (select Name,Family,Count(Name) as num from tbl1 group by Name,Family ) a
    on a.name = b.name and a.family = b.family
    order by num desc
    اینجا ما یک tbl داریم که دارای نام و نام خانوادگی و ID هست که اونا رو بر جسب تکرار مرتب کرده

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

    نقل قول: جستجوي بيشترين ركورد تكراري

    دوباره توضيح ميدم ،‌در برنامه كتابداري من ،‌قسمتي بعنوان سوابق امانت دارم كه شامل كدعضو و شماره ثبت كتاب و تاريخ امانت و بازگشت كتاب و ديركرد .حالا مي خوام اضافه براين جستجوهاي تودرتو كه كدش رو در پايين آوردم بياد و ليست كتابهايي كه بيشتر از بقيه امانت گرفته شده اند يا اعضاي پر كار رو بياره.

    with form15.ADOQuery1 do
    begin
    sql.Clear;
    sql.Add('select * from sabegh');
    sql.Add('where a>0');
    if edit1.Text<>'-' then
    begin
    sql.Add(' and cod=:h');
    parameters.ParamByName('h').Value:=edit1.Text;
    end;
    if edit32.Text<>'-' then
    begin
    sql.Add(' and cd=:m');
    parameters.ParamByName('m').Value:=edit32.Text;
    end;
    if edit31.Text<>'-' then
    begin
    sql.Add(' and cj=:n');
    parameters.ParamByName('n').Value:=edit31.Text;
    end;
    if edit5.Text<>'-' then
    begin
    sql.Add(' and sabt=:j');
    parameters.ParamByName('j').Value:=edit5.Text;
    end;
    if combobox1.Text='Èáå' then
    begin
    sql.Add(' and tam=:k');
    parameters.ParamByName('k').Value:='Èáå';
    end;
    if combobox1.Text='뒄' then
    begin
    sql.Add(' and tam=:k');
    parameters.ParamByName('k').Value:='뒄';
    end;
    if combobox3.Text='Èáå' then
    begin
    sql.Add(' and dir=:l');
    parameters.ParamByName('l').Value:='Èáå';
    end;
    if combobox3.Text='뒄' then
    begin
    sql.Add(' and dir=:l');
    parameters.ParamByName('l').Value:='뒄';
    end;
    if combobox2.Text='ÈÑÇÈÑ' then
    begin
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and dyb=:a and dmb:b');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text='') and (edit12.Text<>'') then
    begin
    sql.Add('and dyb=:a');
    parameters.ParamByName('a').Value:=edit12.Text;
    end
    else
    if (edit26.Text<>'') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and dyb=:a and dmb=:b and ddb=:c');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    parameters.ParamByName('c').Value:=edit26.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text='') then
    begin
    sql.Add('and dmb=:b');
    parameters.ParamByName('b').Value:=edit25.Text;
    end;
    end
    else
    if combobox2.Text='ÈÚÏ ÇÒ' then
    begin
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and (dyb=:a and dmb>=:b) or dyb>:c');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    parameters.ParamByName('c').Value:=edit12.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text='') and (edit12.Text<>'') then
    begin
    sql.Add('and dyb>=:a');
    parameters.ParamByName('a').Value:=edit12.Text;
    end
    else
    if (edit26.Text<>'') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and ((dyb=:a and dmb>=:b and ddb=:c) or (dyb=:d and dmb>:e) or dyb>:f)');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    parameters.ParamByName('c').Value:=edit26.Text;
    parameters.ParamByName('d').Value:=edit12.Text;
    parameters.ParamByName('e').Value:=edit25.Text;
    parameters.ParamByName('f').Value:=edit12.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text='') then
    begin
    sql.Add('and dmb>=:b');
    parameters.ParamByName('b').Value:=edit25.Text;
    end;
    end
    else
    if combobox2.Text='ÞÈá ÇÒ' then
    begin
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and (dyb=:a and dmb<=:b) or dyb<:c');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    parameters.ParamByName('c').Value:=edit12.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text='') and (edit12.Text<>'') then
    begin
    sql.Add('and dyb<=:a');
    parameters.ParamByName('a').Value:=edit12.Text;
    end
    else
    if (edit26.Text<>'') and (edit25.Text<>'') and (edit12.Text<>'') then
    begin
    sql.Add('and ((dyb=:a and dmb<=:b and ddb=:c) or (dyb=:d and dmb<:e) or dyb<:f)');
    parameters.ParamByName('a').Value:=edit12.Text;
    parameters.ParamByName('b').Value:=edit25.Text;
    parameters.ParamByName('c').Value:=edit26.Text;
    parameters.ParamByName('d').Value:=edit12.Text;
    parameters.ParamByName('e').Value:=edit25.Text;
    parameters.ParamByName('f').Value:=edit12.Text;
    end
    else
    if (edit26.Text='') and (edit25.Text<>'') and (edit12.Text='') then
    begin
    sql.Add('and dmb<=:b');
    parameters.ParamByName('b').Value:=edit25.Text;
    end;
    end;
    sql.Add('Group by sabt,a');

    execsql;
    active:=true;
    end;


    لطفا با توجه به اين كد جواب بدين .

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

    نقل قول: جستجوي بيشترين ركورد تكراري

    منتظر راهنمايي دوستان هستم

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

    نقل قول: جستجوي بيشترين ركورد تكراري

    خيلي منتظر راهنمايي دوستان هستم كجايين ؟

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

    نقل قول: جستجوي بيشترين ركورد تكراري

    فكر كنم ديگه زير پام علف سبز شده باشه

    يعني هيچكي نمي دونه راه حل چيه ؟

  10. #10

    نقل قول: جستجوي بيشترين ركورد تكراري

    چند ابهام وجود داره:

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

    در پست دوم گفتین که می خواهین یکی از شروط مربوط به جستجو در جدول سوابق عامل "تعداد امانت های کتاب" باشد برای این منظور می توانین ابتدا جدول اصلی (سوابق یا سوابق بعد از اعمال انواع شروط) را با جدول مشتق شده ی پست دوم join کنید سپس جستجو انجام دهین.
    وبلاگ من (Advanced SQL Querying)

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

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