Autor | Zpráva | ||
---|---|---|---|
xpt26 Profil |
Zdravíčko!
Mam potřeboval bych poradit se správným počítáním článků ve stránce. Mám tabulku článku articles. Tabulku kategorií cats. Tabulku která spojuje články a kategorie articles_cats (článek může být ve více kategoriích.) Tabulku stránek pages. Tabulku spojující stránky a kategorie pages_cats ( na stránce může být více kategorií a v každé kategorii z jedné stránky více článků). A můj problém je že se pokoušim spočítat, kolik je na stránce článků. Tedy vyberu si stránku s page_id = 1 z tabulky pages_cats zjistím, že se stránka nachází v kategoriích cat_id = 1, cat_id = 2, cat_id = 3 a v každé z této kategorie vede odkaz na články s article_id = 1, article_id = 2, article_id = 3. Potřeboval bych se tedy dopočítat k tomu, že na stránce jsou 3 články. Zkoušel jsem něco takovéhleho: SELECT COUNT(a.article_id) AS count2 FROM articles a LEFT JOIN articles_cats ac ON ac.article_id = a.article_id LEFT JOIN pages_cats pc ON pc.cat_id = ac.cat_id WHERE pc.page_id = 1 Moc prosím. |
||
Keeehi Profil |
#2 · Zasláno: 23. 2. 2015, 08:52:55
Použití tabulky pages je velmi neobvyklé. Většinou nic takového není potřeba. Proč ji musíte používat? Čeho se snažíte dosáhnout?
|
||
xpt26 Profil |
V tabulce pages mám jméno teé stránky, zda je statická - pokud ano skript zobrazí html soubor - pokud není statická chtěl bych zobrazit články z kategorii ve kterých je stránka. Možná lepši popis: články řadím do kategorií, ale více kategorií řadím do stránky.
|
||
Keeehi Profil |
#4 · Zasláno: 23. 2. 2015, 12:02:20
Takže lepší pojmenování místo "stránka" by bylo něco jako soubor kategorií nebo nadtkategorie? Něco jako pro
-IT - hardware - PHP - správa servru -Vaření - polévky - rychlovky - pečení Ty jednotlivé položky jsou kategorie a IT a Vaření jsou ve vašem pojmenování stránky. Je to tak? |
||
xpt26 Profil |
Ano, přesně tak jsem to myslel.
|
||
Kajman Profil |
#6 · Zasláno: 23. 2. 2015, 13:24:43
xpt26:
Zkuste si vyčítat počet jedinečných hodnot v id článku... COUNT(DISTINCT a.article_id) A slovo LEFT z joinů můžete dát pryč. |
||
Keeehi Profil |
xpt26:
Ok, pak je vše v pořádku. Mátlo mě to pojmenování, tak jsem si to chtěl ujasnit. Dotaz pro zjistění počtu článků té stránky (nadkategorie) vypadá takto: SELECT COUNT(DISTINCT articles.article_id) AS pocet FROM pages_cats JOIN articles_cats USING (cat_id) JOIN articles USING (article_id) WHERE pages_cats.page_id = 1 Ještě by se místo DISTINCT dalo použít GROUP BY articles.article_id . Nevím ale, jak na tom tyto varianty jsou výkonově.
Pokud může být kategorie jen v jedné stránce, pak by se to dalo zbavit té tabulky pages. |
||
xpt26 Profil |
#8 · Zasláno: 23. 2. 2015, 13:32:10 · Upravil/a: xpt26
Kajman:
Ano DISTINCT zabral. Děkuji! Nicméně je mé schéma těchto tabulek správné? Keeehi: „Pokud může být kategorie jen v jedné stránce, pak by se to dalo zbavit té tabulky pages.“ Bohužel ne, jedna a ta samá kategorie může být ve více stránkách (nadkategoriích) |
||
Časová prodleva: 9 let
|
0