رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نمایش اطلاعات در دسته بندی های جداگانه
#1
من یه جدول اخبار دارم یه جول دسته بندی اخبار

میخوام از هر گروه خبری مثلا 5 تا خبر تو یک باکس نمایش بدم ضمن

   



اینم Join که زدم اما برای نمایش مشکل دارم

public function getNewsByCat(){
       $resault = Database::ArrayQuery("
           SELECT 
           n.id           AS nid,
           n.cat_id       AS ncat_id,
           n.owner_id     AS nowner_id,
           n.title        AS ntitle,
           n.description  AS ndescrition,
           n.keywords     AS nkeywords,
           n.visit        AS nvisit,
           n.like         AS nlike,
           n.dislike      AS ndislike,
           n.picture      AS npicture,
           n.create_date  AS ncreate_date,
           n.public_date  AS npublic_date,
           n.update_date  AS nupdate_date,
           n.expire_date  AS nexpire_date,
           n.status       AS nstatus, 
           nc.id          AS ncid,
           nc.parent_id   AS ncparent_id,
           nc.owner_id    AS ncowner_id,
           nc.name        AS ncname,
           nc.title       AS nctitle,
           nc.description AS ncdescription,
           nc.picture     AS ncpicture,
           nc.create_date AS nccreate_date,
           nc.public_date AS ncpublic_date,
           nc.update_date AS ncupdate_date,
           nc.expire_date AS ncexpire_date,
           nc.status      AS ncstatus
           FROM news n
           LEFT OUTER JOIN news_categories nc 
           ON nc.parent_id = n.cat_id  
           ORDER BY n.id ASC
        ");
       
       echo count($resault);
               
               
   }



پاسخ
تشکر شده توسط:
#2
شما توی Join نمیتونید برای هر گروه جداگانه LIMIT بگذارین. باید یکی یکی بخونید و با UNION به هم بچسبونید.
پاسخ
تشکر شده توسط:
#3
یعنی اول گروه هارو بخونم باکس مخصوصشو نمایش بدم بعد با ایدی گروه باز کوئری بزنم خبراشو بخونم؟
پاسخ
تشکر شده توسط:
#4
هم اینطوری میشه هم اینکه یکجا کوئری بزنید و با UNION بچسبونید. مثال:
$query = array();
foreach($categoryIds as $cid) {
$query[] = '(SELECT
    n.id           AS nid,
    n.cat_id       AS ncat_id,
    n.owner_id     AS nowner_id,
    n.title        AS ntitle,
    n.description  AS ndescrition,
    n.keywords     AS nkeywords,
    n.visit        AS nvisit,
    n.like         AS nlike,
    n.dislike      AS ndislike,
    n.picture      AS npicture,
    n.create_date  AS ncreate_date,
    n.public_date  AS npublic_date,
    n.update_date  AS nupdate_date,
    n.expire_date  AS nexpire_date,
    n.status       AS nstatus,
    nc.id          AS ncid,
    nc.parent_id   AS ncparent_id,
    nc.owner_id    AS ncowner_id,
    nc.name        AS ncname,
    nc.title       AS nctitle,
    nc.description AS ncdescription,
    nc.picture     AS ncpicture,
    nc.create_date AS nccreate_date,
    nc.public_date AS ncpublic_date,
    nc.update_date AS ncupdate_date,
    nc.expire_date AS ncexpire_date,
    nc.status      AS ncstatus
    FROM news n
    LEFT OUTER JOIN news_categories nc
    ON nc.parent_id = n.cat_id
    WHERE (n.id = ' . dbEscape($cid) . '
    ORDER BY n.id ASC
    LIMIT 5)';
}
$query = implode(' UNION ', $query);
پاسخ
تشکر شده توسط: sm_pakdel
#5
اینجا هم باید باز کوئری بزنم که $categoryIds بدست بیارم دیگه درسته؟
باز میشه 2ت ا کوئری
پاسخ
تشکر شده توسط:
#6
اول باید id دسته بندیها رو بدست بیارین ولی بعد، به تعداد دسته بندی ها کوئری جداگانه نداریم و همه بصورت یکجا با یک درخواست از دیتابیس استخراج میشن.
پاسخ
تشکر شده توسط:
#7
راستی، وقتی مستقیماً بعد از یک پست جواب میدین، نقل قول نکنید. Yapathetic
پاسخ
تشکر شده توسط: sm_pakdel
#8
چشم ببخشید عادت کردم
پاسخ
تشکر شده توسط:
#9
چشمتون روشن. موفق باشید.
پاسخ
تشکر شده توسط: sm_pakdel
#10
در مورد Union یه توضیح میدین
مرسی
پاسخ
تشکر شده توسط:
#11
Union یعنی اجتماع. نتایج دو کوئری رو بشرط اینکه اسامی و تعداد و ترتیب فیلدهاشون یکی باشه، به هم میچسبونه.
پاسخ
تشکر شده توسط: sm_pakdel
#12
نتیجه رو درست میاره ولی فقط به لحاظ تعدا و مقادیر جدول اول

کلا جدول دوم که اسم گروه بندی خبرها بود کل بخش ها NUll  برگردونده میشه    
پاسخ
تشکر شده توسط:
#13
(05-04-1394، 06:29 ب.ظ)sm_pakdel نوشته: نتیجه رو درست میاره ولی فقط به لحاظ تعدا و مقادیر جدول اول

کلا جدول دوم که اسم گروه بندی خبرها بود کل بخش ها NUll  برگردونده میشه

این مورد حل شد بخاطر این بود که خط کی مونده به اخر باید به این شکل تغییر میکرد ON nc.id = n.cat_id
پاسخ
تشکر شده توسط:
#14
الان سر استفاده از limit و order تو کوئری مشکل دارم و حدس میزنم بخاطر استفاده از union باشه
شکل خاصی باید این بخش ها رو اضافه کنم ؟
پاسخ
تشکر شده توسط:
#15
برای هرکدوم جداگانه باید LIMIT بزنین و بعد UNION کنید.
پاسخ
تشکر شده توسط: sm_pakdel




کاربران در حال بازدید این موضوع: 5 مهمان