Výběr dat ze dvou a více tabulek a jejich seřazení

koubi
Člen | 47
+
0
-

Ahoj, chtěl bych požádat o pomoc s výběrem dat z více tabulek (konkrétně ze tří) a s následným seřazením podle jednoho společného sloupce.

Pochopil jsem správně, že k tomu bude potřeba si hrát s Database Explorer? Já bych se chtěl držet klasického rozhraní Repository. Je to nějak možné poskládat v této třídě nad jednou tabulkou?

CZechBoY
Člen | 3608
+
0
-

Dej příklad co konkrétně chceš vybrat (ideálně přilož i strukturu tabulek).

koubi
Člen | 47
+
0
-

No mám tři tabulky review, href a multi. Každá tabulka pak má sloupec date_lastchange, podle kterého bych chtěl ty výsledky řadit. Chtěl bych vždy načíst X záznamů z těch tabulek. Stačí to takto?

David Matějka
Moderator | 6445
+
0
-

jake jsou mezi nimi vazby? mozna bude nejlepsi, kdyz ukazes strukturu db.

Pochopil jsem správně, že k tomu bude potřeba si hrát s Database Explorer?

database explorer je optional, muzes vzdy klidne psat sql (ale pripravis se tedy o activerow, selection atp.). pokud ho tedy chces pouzit, tak ukaz strukturu db, jaka data chces vybrat (tzn jak ty tabulky chces v selectu propojit), pripadne rovnou napis, jak bys udelal sql a poradime ti, jak to prepsat do database exploreru :))

koubi
Člen | 47
+
0
-

Může mi teda někdo poradit nástroj na sestavení té struktury databáze do nějaké grafické podoby?

Nemám s tím zkusenost. Případně umí to i samotný phpMyAdmin?

koubi
Člen | 47
+
0
-

Prakticky jde ale o to, že se snažím vybrat řádky ze tří různých tabulek. Nejsou mezi nimi žádné vztahy. Mají jen společný sloupec date_lastchange, podle kterého bych to chtěl vybírat. Podle něj by se to mělo i řadit.

CZechBoY
Člen | 3608
+
0
-

Pošli strkturu těch tabulek, 3 tabulky se sloupcema přepíšeš ručně hned… případně můžeš exportovat strukturu jako sql a poslat sem příkazy CREATE TABLE.

koubi
Člen | 47
+
0
-

Takže dobrá, nicméně jsou to tabulky s několika sloupci, ale když to shrnu, tak mám zhruba toto:
review – id, category, brand, title, …, date_issued
href – id, category, title, …, date_issued

…třetí tabulku ještě nemám, ale to by už neměl být problém to do-implementovat. Sloupcem, podle které by se to mělo řadit je date_issued.

Ještě dodám že mezi tabulkami není žádný vztah.

Prostě potřebuji vybrat řádky z tabulek review a z href a seřadit je podle sloupce date_issued.

Editoval koubi (8. 9. 2017 12:41)

David Matějka
Moderator | 6445
+
0
-

jako chces, aby ve vysledku byly nakombinovane radky z obou tabulek? ze tam bude radek z review, pak radek z href dle toho date_issued?

koubi
Člen | 47
+
0
-

Přesně tak.

David Matějka
Moderator | 6445
+
+3
-

k tomu slouzi UNION, ale obavam se, ze na urovni database exploreru ho nezapises.

spise bych se ale zamyslel nad upravou DB struktury, abys mel jednu hlavni tabulku, kde by bylo jen nejake id a date_issued a k tomu bys joinoval jednotlive zaznamy

FilipH
Člen | 6
+
+1
-

To, co hledáš, je UNION. Čili, v tomhle případě, něco na způsob:

(SELECT date_issued, id, title, category FROM review) UNION (SELECT date_issued, id, title, category FROM href) ORDER BY date_issued

Nette Database Explorer je, nejasně tuším, trochu jiný nástroj, jednodušší bude (soudě podle dokumentace) vytáhnout si Nette\Database\Connection a ten dotaz napsat ručně. Ale třeba to někdo „dá“, tuhle část Nette jsem fakt viděl jen z rychlíku.

koubi
Člen | 47
+
0
-

David Matějka napsal(a):

k tomu slouzi UNION, ale obavam se, ze na urovni database exploreru ho nezapises.

spise bych se ale zamyslel nad upravou DB struktury, abys mel jednu hlavni tabulku, kde by bylo jen nejake id a date_issued a k tomu bys joinoval jednotlive zaznamy

A není taková tabulka zbytečná věc na víc? Nebude to databázi zbytečně zatěžovat? Nicméně počítám, že se tam bude pracovat s jednotkami tisíce záznamů, tudíž by to mělo být velmi schůdné řešení, že?

CZechBoY
Člen | 3608
+
+1
-

Oproti UNIONu to bude určitě méně náročné :D
Záleží taky jak často budeš takovej union dělat. Jestli téměř pořád tak určitě je třeba zvážit jestli je struktura db správně navržená a nebylo by lepší ty tabulky sloučit.

koubi
Člen | 47
+
0
-

CZechBoY napsal(a):

Oproti UNIONu to bude určitě méně náročné :D
Záleží taky jak často budeš takovej union dělat. Jestli téměř pořád tak určitě je třeba zvážit jestli je struktura db správně navržená a nebylo by lepší ty tabulky sloučit.

Asi si zvolím to sloučení tabulek, protože tím odpadne několik dalších problémů.

Takže Všem děkuji za názory a pomoc.