Hledáme Nette programátory a kolegy - super tým i plat
Zobrazují se odpovědi 1 až 9 z 9

Poslední aktivity uživatelů na stránce

  1. Ahoj,

    momentálně řeším problém s výpisem aktivit uživatelů. Nevíte jak by se dali propojit 2 různé tabulky a zároveň z nich získat informaci o tom, která je to aktivita?

    Možná by to šlo vyřešit nějakým polem v PHP a seřazením dle času, ale chci se zeptat, zda není možnost přímo v DB.

    To samé mají např. na http://www.vareni.cz/ (vpravo dole)
    Díky všem za náměty.

    Zjednodušená ukázka tabulek:
    Kód:
    tabulka NAKUP
    ID IDUZIVATELE IDRUCNIKU TIMESTAMP
    
    tabulka UTIRANI
    ID IDUZIVATELE IDRUCNIKU TIMESTAMP
    Výpis aktivit:
    • uživatel franta se právě utřel do ručníku s id 33
    • uživatel pepa si právě koupil ručník s id 55

  2. Happy Robot :]

    Co se právě děje na Webtrhu?

  3. nic proti ale osobne mi pride hlupe mat 2 tabulky s rovnakymi stlpcami ked by stacila jedna a pridat jej stplec druh aktivity
    celkovo by som to zmenil na tabulky
    aktivita
    ID ID_UZIVATELE ID_RUCNIKU ID_DRUH_AKTIVITY TIMESTAMP

    typ_aktivity
    ID_DRUHU_AKTIVITY NAZOV_AKTIVITY

    tym zachovas presne rovnaku funkcionalitu ale navyse mas moznost pridavat viacero aktivit, priamo selectovat aktivity podla zadanych typov priamo z jednej tabulky a nemusis to riesit programovo cez polia a neviem co este si spominal

  4. Díky za názor.

    Problém je v tom, že těch aktivit bude více (registrace, přidání fotky, přidání videa, úprava informací, úprava zápisu položky, označení něčeho atd...) A navíc to bude mít každý uživatel v profilu. A v té jedné tabulce by bylo strašně moc dat.

    Když si to tak vezmu, tak ta aktivita je vlastně něco "podobného", jako na zdi na facebooku...

  5. pokial budu aktivity rovnake tak ako v tom tvojom predoslom pripade tak to ries ako som pisal... bat sa toho ze udajov bude vela sa nemusis.. spravnou idexaciou budu dotazy rychle. v praci pracujem s db obsahujucou autodiely s popism,i technickymi udajmi, nahradami pre konkretne diely a je tam daco vyse milion zaznamov a cela db aj s obrazkami ma skoro 30GB a predsa databaza fici pekne rychlo...

  6. Funkcionalitu, kterou potřebujete v SQL realizuje UNION ALL. Použití viz zde.

    Upozorňuji, že né všechny databázové systémy to podporují a obecně se to zas až tak moc nepoužívá, neboť se, pokud to jde, obvykle používá jedna tabulka, jak už ostatně uvedli ostatní.

  7. Díky za nakopnutí, zkusím z toho udělat to co potřebuji :)

  8. unionom sice vypise polozky z viacerych tabuliek ale podla tej schemy co zadal nedostane to co chcel on a to konkretne nazvy aktivit... jedine prepracovat schemu inak to nedostane nejako jednoducho

  9. Takže, už jsem nalezl řešení a přidávám pro další uživatele.

    Kód:
    (SELECT "utirani" AS `aktivita`, `timestamp`, `idrucniku`, `iduser` FROM `utirani` ORDER BY `timestamp` LIMIT 10)
    UNION
    (SELECT "nakup" AS `aktivita`, `timestamp`, `idrucniku`, `iduser` FROM `nakup` ORDER BY `timestamp` LIMIT 10)
    UNION
    (SELECT "neco" AS `aktivita`, `timestamp`, `idrucniku`, `iduser` FROM `neco` ORDER BY `timestamp` LIMIT 10)
    ORDER BY `timestamp` DESC
    LIMIT 10

  10. správné řešení je to co psal martinzsa, tedy udělat jinak návrh tabulek. Řešit velké množství dat v jedné tabulce tím že to rozdělím do dvou stejných (časem víc) je nesmysl.

    UNION je sice možné řešení, s každou další aktivitou a tedy novou tabulkou (v tvém špatném návrhu) budeš muset union předělat a přidat další subquery. UNION sám o sobě je dost pomalý a zatěžuje server, pokud navíc budeš dělat UNION přes hodně tabulek to pro velké množství dat, tak si koleduješ o problém s výkonem.

    Jedna tabulka, nad ní správně definované indexy a číselník aktivit je v tomto případě jediná správná volba. Ostatní je z hlediska návrhu databáze a jejího výkonu špatně.

Podobná témata

  1. Jak nezobrazit posledních 200px stránky?
    By RayComputers in forum Design
    Odpovědí: 12
    Poslední příspěvek: 07.03.2009, 22:02
Hostujeme u Server powered by TELE3