Autor Zpráva
Bublino
Profil *
Zdravím, rád by som sa spýtal akým štýlom získavať z databázy statusy a komentáre(ako na FB). Zjednodušene, na statusy použijem
SELECT * FROM statusy
, ale čo pre komentáre? Komentár predpokladajme má svoje ID a taktiež statusId, lenže (ideálne v jednom query) by som potreboval vytiahnuť aj statusy aj komentáre.

Iné riešenie ma napáda najskôr vytiahnuť statusy(tým pádom získať ich IDčka) a potom vytiahnuť komentáre v niečim takýmto:
SELECT * FROM komentare WHERE statusId IN (statusId1, statusId2, ...)


Chcel by som vedieť, či je vhodné toto použiť(prípadne iné best-practice) a či to nebude príliš náročné na DB.(i keď na statusId môže byť index). Ak je na to vhodnejšie iné logické riešenie, rád si ho prečítam :) Vďaka.
Joker
Profil
Bublino:
SELECT (sloupce) FROM statusy s JOIN komentare k ON s.statusId = k.id
ninja
Profil
Bublino: Zamyslel bych se, jestli status a komentář není to samé, pouze status má u sloupečku "reactionToId" hodnotu null...
Bublino
Profil *
Joker:
Nebude sa pri tvojom SELECTe diať to, že sa pri každom jednom komentári(riadku) prenesie duplikovane info o statuse? Či DB to nebude prekážať?
ninja:
Vďaka, dostal som chrobáka do hlavy. Ide o to, že komentáre používam ešte pri testoch a mám napísanú komponentu, ktorá sa o to pekne stará. Skôr by som videl problém v tom, ako vytiahnuť z DB komentáre a rovno aj príslušné reakcie na ne. Ak má niekto záujem, rád si to prečítam, bo v DB mám ako vidím podstatné medzery.
Vďaka obom.
Joker
Profil
Bublino:
Nebude sa pri tvojom SELECTe diať to, že sa pri každom jednom komentári(riadku) prenesie duplikovane info o statuse? Či DB to nebude prekážať?
Databázi to bude celkem jedno, je to jen výsledek SELECT dotazu :-)

Skôr by som videl problém v tom, ako vytiahnuť z DB komentáre a rovno aj príslušné reakcie na ne.
Podobné problémy se tu řešily, například:
Stromová struktura
Datovy model jednoduche diskuse
Traverzování okolo stromu - výpis jedné úrovně
Traverzování kolem stromu - výpis dle kategorie

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0