Autor Zpráva
Paja222
Profil
Vyřešeno - když jsem to vše sepsal, tak mě napadlo odmazat kategorii ve where podmínce a funguje to jak má, omlouvám se tedy za spam a zamykám :-)

Ahoj,
prosím o radu vzhledem k efektivnosti následujícího dotazu do DB. Tento dotaz volám celkem 4x (4 typy diskusí). Šel by nějak slednotit, do jednoho velkého dotazu?

Mám tabulku "diskuse" kde jsou (mimo jiné) sloupečky: kategorie (identifikační klíč diskuse) a idprispevku
Poté mám tabulku "diskuse_nastaveni" kde je (mimo jiné) iduzivatele, kategorie a posledni_precteny (v tomto poli je ID posledního přečteného příspěvku).

diskuse:
.....
idprispevku: 20, kategorie: "prvni";
idprispevku: 21, kategorie: "prvni";
idprispevku: 22, kategorie: "prvni";
idprispevku: 1, kategorie: "druha;
idprispevku: 2, kategorie: "druha;

diskuse_nastaveni:
iduzivatele: 1, kategorie: "prvni", posledni_precteny: 20;
iduzivatele: 1, kategorie: "druha", posledni_precteny: 1;

Jde mi o dostání 2 údajů z každé kategorie. První je počet nových příspěvků (od posledního přečteného) a číslo posledního přečteného příspěvku. Nyní to provádím tímto dotazem:
SELECT count(*),posledni_precteny FROM diskuse d LEFT JOIN diskuse_nastaveni dn ON dn.iduzivatele='1' AND dn.kategorie=d.kategorie WHERE d.idprispevku>dn.posledni_precteny  AND d.kategorie='prvni' GROUP BY d.kategorie

Chtěl bych to předělat na jeden dotaz, který k jednomu iduzivatele a všem kategoriím vrátí tyto 2 údaje (respektive 3 - název kategorie). Již nad tím sedím několik dní a nenapadá mě, jak to předělat. Nyní se 4 dotazy (při každém načtení stránky) dají tolerovat, ale do budoucna bude přibližně 15 kategorií diskusí, což je již moc.

Díky za každou radu. (nebráním se ani předělání struktury tabulek)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0