Spojení dat z tabulek a srovnání podle datumu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Zuben45
Člen | 268
+
0
-

Dobrý den,
již delší dobu řeším problém jak bych měl spojit data z db a poskládat je podle datumu.

Mám 3 tabulky novinky, recenze, clanky. (data které potřebuji vypsat mají stejné názvy v každé tabulce, jsou to id, name, text, date)

z toho bych potřeboval, aby se mi vypsalo 5 výpisů ze všech tabulek a to podle datumu.

Např. budu mít novinky z datumů 24.3.2013, 22.3.2013, 1.1.2014, 6.2.2014, 29.3.2014 a to samé u zbývajícíh dvou tabulek. Z toho bych potřeboval, aby se vypsalo novinka z data 29.3.2014 pak recenze z 29.3.2014 pak článek z 29.3.2014,… pořadí by se určilo samo podle toho data.

Takže by se vypisovalo např

novinka, recenze, článek, recenze, článek

a nebo např.

recenze, článek, článek, článek, novinka

Napadlo mě to udělat přes array, ale ať jsem zkoušel jak chtěl, pořád nic.
Neví někdo jak by to bylo možné udělat ?

Editoval Zuben45 (29. 3. 2014 16:05)

zdrhal
Člen | 42
+
0
-

Taky te zdravím,

Osobně bych v modelu vytahal z db tabulky novinky, recenze a clanky.

Prezenteru bych to predal a udelal bych pole s datumy ze kterych chces vypisovat. A srovnal si tabulky novinky, recenze a clanky dle datumu.

V sablone bych pak vytvoril smycku pro vypis. Mozna je to spatne jsem taky zacatecnik tak to ber s rezervou.

EDIT:
Me se moc nezda tva DB. Ja osobne bych db volil publikace (id, id_druh, autor, datum, text) a druha tabulka druhypublikaci (id, druh). Pak bys to normos radil dle datumu a nasledne treba dle id. (takhle me to prijde chytre, nevim proc db trhat takhle na vice casti)

Editoval zdrhal (29. 3. 2014 17:48)

motorcb
Člen | 552
+
0
-

Udělal bych UNION select
http://www.linuxsoft.cz/article.php?…

Zuben45
Člen | 268
+
0
-

zdrhal napsal(a):

Taky te zdravím,

Osobně bych v modelu vytahal z db tabulky novinky, recenze a clanky.

Prezenteru bych to predal a udelal bych pole s datumy ze kterych chces vypisovat. A srovnal si tabulky novinky, recenze a clanky dle datumu.

V sablone bych pak vytvoril smycku pro vypis. Mozna je to spatne jsem taky zacatecnik tak to ber s rezervou.

EDIT:
Me se moc nezda tva DB. Ja osobne bych db volil publikace (id, id_druh, autor, datum, text) a druha tabulka druhypublikaci (id, druh). Pak bys to normos radil dle datumu a nasledne treba dle id. (takhle me to prijde chytre, nevim proc db trhat takhle na vice casti)

Díky, zkusím to,.

K editu, no právě mám tam hromadu položek, takže gigovou tabulku opravdu nechci :), navíc by dlouho trvalo než by to všechno projelo :)

Editoval Zuben45 (29. 3. 2014 18:50)

Zuben45
Člen | 268
+
0
-

motorcb napsal(a):

Udělal bych UNION select
http://www.linuxsoft.cz/article.php?…

díky, funguje, jen šlo by nějak zjistit z jaké tabulky to vytáhlo ?, kvůli odkazu a templatu to potřebuji

zdrhal
Člen | 42
+
0
-

Ok jak myslis, me to prijde ok jen pokud by jsi mel u tech 3 tabulek odlisnou strukturu. Kdyz to ted budes ruzne spojovat tak stejne si myslim ze ztratis na vykonu, ale muzu se mylit. Tak snad to nejak vyresis, ten 3 koment vypadal solidne, ze by ti mohl pomoct. Hodně zdaru.

Zuben45
Člen | 268
+
0
-

zdrhal napsal(a):

Ok jak myslis, me to prijde ok jen pokud by jsi mel u tech 3 tabulek odlisnou strukturu. Kdyz to ted budes ruzne spojovat tak stejne si myslim ze ztratis na vykonu, ale muzu se mylit. Tak snad to nejak vyresis, ten 3 koment vypadal solidne, ze by ti mohl pomoct. Hodně zdaru.

No asi jo, no až tak moc to není, dal jsem limit, tak snad to pomůže :), a už jsem to vyřešil, všude jsem přidal colum table_name s defaultní hodnotou názvu tabulky a fakční to jak nikdá :)

zdrhal
Člen | 42
+
0
-

Podle toho co pises, jsi provedl v db pekny zverstvo (jestli te dobre chapu) :D Ale tak hlavni je ze to funguje jak nikdá (to slovo zni krutoprisne) :D

Editoval zdrhal (29. 3. 2014 23:57)

greeny
Člen | 405
+
0
-

Tos nemusel přidávat, v tom článku na linuxsoftu je to popsaný.

SELECT id, title, 'article' AS table_name FROM article UNION ALL SELECT id, title, 'news' AS table_name FROM news UNION ALL SELECT id, title, 'recensions' AS table_name FROM recensions

Editoval greeny (30. 3. 2014 0:20)

Majkl578
Moderator | 1364
+
0
-

Nesouvisí s Nette.