Hirdetés

Új hozzászólás Aktív témák

  • Taci
    addikt

    Simán meg lehet trükközni a lekérdezést, hogy pl csak a legfrissebb 1000-ben keresse az első ötöt (persze, ha lesz annyi és nem került be az összes a "rossz" kategóriába):
    SELECT i.item_id, i.item_date
    FROM (
    SELECT item_id, item_date
    FROM items
    ORDER BY item_date DESC LIMIT 1000) as i INNER JOIN items_categories AS c ON i.item_id=c.item_id
    WHERE
    c.category_id NOT IN (1,3,13,7,20) AND
    i.item_id NOT IN (117,132,145,209,211)
    GROUP BY i.item_id, i.item_date
    ORDER BY i.item_date DESC LIMIT 4

    Ha az általad írt lekérdezés által visszaadott össz-elemszámot szeretném megtudni (a belső limit nélkül - hogy később tudjak vele számolni, a belső limit meddig nyújtózkodhat - szóval a belső Select-et ezért veszem ki, plusz ugye nem kell rendezni sem (Order By), és a végén lévő Limit sem kell)), akkor jelen tudásom szerint azt így kérdezném:

    SELECT COUNT(*) AS result_count FROM
    (SELECT i.item_id FROM items AS i 
    INNER JOIN items_categories AS c ON i.item_id=c.item_id
    WHERE 
      c.category_id NOT IN (1,3,13,7,20) AND
      i.item_id NOT IN (117,132,145,209,211)
    GROUP BY i.item_id) AS t

    Van esetleg ennek hatékonyabb, gyorsabb, jobb módja?

    Ezt találtam még:
    SELECT COUNT(DISTINCT item_id) AS result_count FROM
    (SELECT i.item_id FROM items AS i
    INNER JOIN items_categories AS c ON i.item_id=c.item_id
    WHERE
    c.category_id NOT IN (1,3,13,7,20) AND
    i.item_id NOT IN (117,132,145,209,211)) AS t

    Itt elvileg a Distinct kiváltja a Group By-t.

    Viszont sajnos Count-hoz a phpMyAdmin nem ír lekérdezési időt, így nem tudom, melyik a gyorsabb. Vagy jobb.

    Ebben kérnék tanácsot.
    Köszönöm.

Új hozzászólás Aktív témák