تالار گفتمان nCIS.ir

نسخه‌ی کامل: نمایش اطلاعات در دسته بندی های جداگانه
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
من یه جدول اخبار دارم یه جول دسته بندی اخبار

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

[attachment=76]



اینم 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);
               
               
   }



شما توی Join نمیتونید برای هر گروه جداگانه LIMIT بگذارین. باید یکی یکی بخونید و با UNION به هم بچسبونید.
یعنی اول گروه هارو بخونم باکس مخصوصشو نمایش بدم بعد با ایدی گروه باز کوئری بزنم خبراشو بخونم؟
هم اینطوری میشه هم اینکه یکجا کوئری بزنید و با 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);
اینجا هم باید باز کوئری بزنم که $categoryIds بدست بیارم دیگه درسته؟
باز میشه 2ت ا کوئری
اول باید id دسته بندیها رو بدست بیارین ولی بعد، به تعداد دسته بندی ها کوئری جداگانه نداریم و همه بصورت یکجا با یک درخواست از دیتابیس استخراج میشن.
راستی، وقتی مستقیماً بعد از یک پست جواب میدین، نقل قول نکنید. Yapathetic
چشم ببخشید عادت کردم
چشمتون روشن. موفق باشید.
در مورد Union یه توضیح میدین
مرسی
Union یعنی اجتماع. نتایج دو کوئری رو بشرط اینکه اسامی و تعداد و ترتیب فیلدهاشون یکی باشه، به هم میچسبونه.
نتیجه رو درست میاره ولی فقط به لحاظ تعدا و مقادیر جدول اول

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

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

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