Výběr dat ze dvou a více tabulek a jejich seřazení
- koubi
- Člen | 47
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?
- David Matějka
- Moderator | 6445
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
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
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?
- David Matějka
- Moderator | 6445
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
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
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?
- koubi
- Člen | 47
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.