آژانس هواپیماییexchanging

انتخاب نتايج مشترك در دو select كه توسط mysql انجام شده است

شروع موضوع توسط al_frd ‏20 ژوئن 2004 در انجمن PHP

  1. al_frd

    al_frd Registered User

    تاریخ عضویت:
    ‏18 دسامبر 2002
    نوشته ها:
    317
    تشکر شده:
    5
    سلام
    فرض كنيد كه با دستور select دو سري خروجي از Mysql داريد .
    حالا چطور ميشه خروجي هاي مشترك بين اونها را به عنوان خروجي نهايي استخراج كرد ؟

    مثلا دستور union ميتونه دو سري خروجي رو به هم وصل كنه (درسته ؟) ، آيا دستور هست كه خروجي هاي مشترك رو گزارش كنه ؟
     
  2. knowhow

    knowhow مدیران قدیمی

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    3,477
    تشکر شده:
    19
    دستوري فكر نمي كنم باشه كه بعد از select زدن این کار رو بکنه.
    ولی اگه بخوای می شه در هنگام select زدن مقادیری رو select کنی که مثلا فلان فیلدشون با هم برابر باشه.
    اگه خواستی بگو تا من دستورش رو برات پیدا کنم.
     
  3. al_frd

    al_frd Registered User

    تاریخ عضویت:
    ‏18 دسامبر 2002
    نوشته ها:
    317
    تشکر شده:
    5
    خيلي ممنون
    بهتره من هدف اصليم رو بگم . كه زودتر به نتيجه برسم . من مي خوام يه قسمت براي جستجو درست كنم كه وقتي كاربر مثلا سه تا لغت رو search مي كنه نتيجه اش رديفي باشه كه هر سه تا لغت توش باشه ( تعداد لغات قابل تغيير باشه يعني ممكنه كاربر 5 تا لغت بزنه ) . حالا توي هر ستوني بود اهميتي نداره ، فقط سطر هايي رو پيدا كنه كه هر سه تا لغت توش رو باشه .( مثل وقتي كه شما توي گوگل با "+" جستجو مي كنيد )
    تا حالا پنج تا راه به نظرم رسيده ولي نمي دونم كدومش عملي و درست هست .
    1- استفاده از روشي كه بالا گفتم ، يعني به تعداد لغات select انجام بشه ، بعد اشتراك نتيجه ي select ها گزارش بشه
    2- استفاده از يه select كه جلوي قسمت where بشه يه حلقه تعريف كرد (مثلا با while) كه عمل where روي خروجي هاي حلقه انجام بشه .
    3- استفاده از دو تا table كمكي كه رديفهايي كه اولين لغت توش هست رو select كنه و بريزه توي table1 .
    بعد select براي لغت دوم از table1 انجام بشه و نتيجه اش بره تو table2 . دوباره select براي لغت سوم توي table2انجام بشه و نتيجه اش بره توي table1 و ... همه لغتها كه تموم شدن محتواي آخرين جدول كه ورودي داشته رو گزارش كنه .
    4- يه table كمكي بسازيم دقيقا مثل table اصلي . از لغت اول شروع كنيم توي هر رديفي كه نبود ، اون رديف حذف بشه . همين كار رو براي لغت دوم و ... هم انجام بديم . جدول نهايي ميشه جواب ما ...
    5- استفاده از Boolean Full-Text Searches مثل :
    کد:
    SELECT * FROM table WHERE MATCH (... , ... , ...) AGAINST ('+word1 +word2' IN BOOLEAN MODE);
    باز هم بايد توي قسمت AGAINST يه حلقه تعريف كرد كه +word ها نتيجه اون باشه

    فكر ميكنم راه حلهاي مسخره اي باشه ولي ديگه نمي دونم چي كار كنم . اصلا نمي دونم كدوم يكي از اينها شدني هست . لطفا راهنمائيم كنيد :blush:

    اگه برنامه اي ميشناسين كه اين كار رو بكنه ممنون ميشم معرفي اش كنيد . :)
    ( مي خواستم از search برنامه هايي مثل Phpbb يا VB استفاده كنم و راه اونها رو پيدا كنم اما آدم سراغ اونها نره بهتره :wacko: )
     
  4. knowhow

    knowhow مدیران قدیمی

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    3,477
    تشکر شده:
    19
    خوب راحت ترین راه اینه که همون select معمولی بزنی و توش حلقه بدی. یعنی اینطوری :

    PHP:

    $sql 
    "select * from table where ";

    //inja har halgheyi mikhay bezar 

    for ($i 1$i <= 10$i++) { 

    if (
    $name[$i] != '') {
    $sql .= "`row` like '%$serachkeyword%' " ;
    }



    $query mysql_query($sql) ;

    خوب این باید کارت رو راه بندازه.
    اول میای تیکه ابتدای query رو می نویسی و بعد یه حلقه می زنی و بعد هم تمام.
    این بهترین راه حل است.
     
  5. al_frd

    al_frd Registered User

    تاریخ عضویت:
    ‏18 دسامبر 2002
    نوشته ها:
    317
    تشکر شده:
    5
    خيلي ممنون .
    مشكل حل شد . در ضمن كلي چيز ياد گرفتم .
    مرسي
     
  6. aaber_piade

    aaber_piade Registered User

    تاریخ عضویت:
    ‏19 دسامبر 2002
    نوشته ها:
    1,662
    تشکر شده:
    28
    محل سکونت:
    Tehran
    دوستان اين مدل ظاهر شدن كدها در استايل كرم مشكل داره يه قدري.. روي blue درست کار ميکنه.
     
  7. choop342

    choop342 کاربر تازه وارد

    تاریخ عضویت:
    ‏13 جولای 2004
    نوشته ها:
    2
    تشکر شده:
    0
    اين دستورات رو كار كن
    select $tablename1.$fild1 FROM $tablename1 INNER JOIN $tablename1 ON $tablename1.$fild1 = $tablename2.$fild2
    بعدش ما رو هم دعا كن
     
  8. al_frd

    al_frd Registered User

    تاریخ عضویت:
    ‏18 دسامبر 2002
    نوشته ها:
    317
    تشکر شده:
    5
    سلام
    هنوز امتحان نكردم ( آخه با روشي كه knowhow گفته بودند مشكلم حل شد )
    ولي دستتون درد نكنه . همين كه لطف كردين و راه حلي كه نظرتون رسيد رو گفتين جاي تشكر فراوان داره .
    اميدوارم در حل مشكلات بعديم كمكم كنيد . ( آخه من يه تازه كارم ... ;) )