November Black Friday C/C++ week
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

Diskuze: Spojení 4 tabulek s možností editace sloupce?

Aktivity (1)
Avatar
Jan Hlavatý
Člen
Avatar
Jan Hlavatý:19. října 10:59

Mám 4 tabulky v MS Access. Každá má stejný počet sloupců (17). Jeden z těch sloupců je údaj "pořadí", což je čistě číselná hodnota. Údaj "pořadí" určuje, v jakém pořadí se po spojení tabulek mají jejich záznamy za sebou vypisovat. Databáze s těmito tabulkami pracuje tak, že je spojí, podle nějakých kritérií vyfiltruje jejich obsah, podle údaje ve sloupci "pořadí" záznamy za sebou seskládá, a obsah posledního sloupce vyplivne do Wordu.

Většina sloupců v těch 4 tabulkách je zcela stejných (čerpají před ForeignKey ze stejných tabulek), rozdíl je pouze v jejich posledním sloupci. Jejich poslední sloupec čerpá přes ForeignKey pokaždé z jiné tabulky.

Zkusil jsem: UNION, UNION ALL. Spojit ony 4 tabulky není problém. Problém je, že pak jsou needitovatelné jejich sloupce. Resp. stačí mi, když zůstane editovatelný jen jeden z nich, sloupec "pořadí".

Chci docílit: Naprosto šílené je, když musím upravit hodnoty "pořadí" v těch 4 jednotlivých tabulkách. Musím pořád přeskakovat mezi nimi, a všeljak si pomocně vypisovat, co bude v jakém pořadí.
Potřeboval bych ony 4 tabulky spojit nějakým příkazem, ale tak, aby mi zůstalo editovatelné pole "pořadí". Abych si v té spojené tabulce mohl pohodlně editovat pořadí, v jakém se mají jednotlivé záznamy vypisovat.

 
Odpovědět
19. října 10:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21. října 8:39

Nerozumim. Nepouzivam MS Access, mozna to je problem.
Sql prikaz vypisuje data podle zadani. Neprovadi editaci. INSERT prikaz vklada, UPDATE upravuje, REPLACE prepisuje. Cili, tyto 3 edituji.

Nebo te mozna zajima prikaz COUNT(), SUM()? Kdyz da COUNT(*) nebo COUNT(id), tak on ke kazdemu radku prida poradi.

a, b
1, text
4, text
7, text ... vsude stejny text

SELECT a, COUNT (a) AS poradi AS suma FROM tab ORDER BY a DESC
a, poradi, suma - suma nema vyznam, protoze nemas grupovani
7, 1, 7
4, 2, 4
1, 3, 1

SELECT a, COUNT (a) AS poradi, SUM(a) AS suma FROM tab GROUP BY b ORDER BY a DESC
a, poradi, suma
1, 1, 12

  • ted si nejsem jisty..., SELECT a by v tomto pripadu melo hodit hodnotu z prvniho nebo posledniho radku grupovani
  • count by mel dat 1, jako 1 radek nebo 3 jako v grupe (skupine), ze jsou 3 radky
  • suma dela soucet pro sloupec a, 7 + 4 + 1 = 12

A nebo je to mozna to, cos resil v tom druhem tematu. :)

Editováno 21. října 8:39
 
Nahoru Odpovědět
21. října 8:39
Avatar
Jan Hlavatý
Člen
Avatar
Jan Hlavatý:21. října 9:13

Nene, nepotřebuji aby dotaz udělal editaci.
Potřebuji spojit 4 tabulky (jiné než v předchozím dotazu).
A prostřednictvím té jedné spojené tabulky potřebuji editovat pole "pořadí" v těch zdrojových tabulkách.

Ono spojit je spojím. Jen ten výsledek je needitovatelný.

Editováno 21. října 9:14
 
Nahoru Odpovědět
21. října 9:13
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21. října 13:31

Fiha. Ty si hrozne komplikujes praci. A nejedna se nahodou o jednorazovou vec? Protoze pak by bylo samozrejme jednoduche, udelat si vystup a podle te tabulky upravit data.

Ja bych asi zkusil google.
Nejsem si uplne jisty, jak bych to delal. Taky jsem jen amater. Treba nekdo odepise, jeste.
Ja bych si vytahl data ve formatu:

tabulka_name, id_name, id, poradi

A pak zkusil zavolat

UPDATE tabulka_name SET id_name=id, `poradi`=poradi

Ale mozna je nutne to uz resit pres SQL funkce. Netusim, zda je na to nejaky sql dotaz.
Hadam spravne, ze kazda ta tabulka ma jine tabulka_name, ze?

google = update row by table name ms access
google = select and update ms access
google = ms access function select update
https://stackoverflow.com/…osoft-access

Kdyby slo prave o jednu tabulku, tak by ten dotaz vypadal nejak takto, jak je v tom odkaze

UPDATE [Table]
SET [Name] = s.[Name]
FROM (
      SELECT [Name], [Ref]
      FROM [Table] as s
      WHERE [Name] <> 'NoName')
WHERE
     [Name]='NoName' AND [Ref] = s.[Ref]"
 
Nahoru Odpovědět
21. října 13:31
Avatar
Jan Hlavatý
Člen
Avatar
Jan Hlavatý:21. října 15:20

Si asi nerozumíme.
Mám 4 tabulky, které se pro výsledný dokument skládají dohromady.
Obsah pro generovaný dokument se v těch tabulkách průběžně mění. Doplňuje se.
Jak se obsah doplňuje a upravuje, je nutné sahat i do pořadí jednotlivých záznamů.
To pořadí jednotlivých záznamů se nyní zadává ručně do sloupce "poradi".
Zapsáním čísla (10, 20, 30, …) do sloupce "poradi" každé z tabulek.
Když se ty tabulky složí dohromady, výsledný obsah se pak řadí podle sloupce "poradi".

Čili ne, není to jednorázové.
Ano, každá z těch 4 tabulek má jiné tabulka_name.
Vysosat někam "tabulka_name, id_name, id, poradi" budiž.
Ale abych to pak byl schopen řadit, potřebuji u toho vidět i obsah jednotlivých ID.
Když mi vznikne jen nějaká tabulka čísel "tabulka_name, id_name, id, poradi", tak nebudu schopen to pořadí nijak upravovat, protože nepůjde poznat, co je pod jakým ID za obsah.
Proto ta myšlenka na spojení tabulek, abych viděl i jejich obsah.

 
Nahoru Odpovědět
21. října 15:20
Avatar
Ondřej Crha
Redaktor
Avatar
Odpovídá na Jan Hlavatý
Ondřej Crha:25. října 10:36

Ahoj,
s MS Access nemám moc zkušeností, ale co jsem tak googlil, tak by se dal problém řešit vytvořením view deklarovaného jako zmíněné uniony, a nad tímto view vytvořit Data Macro

 
Nahoru Odpovědět
25. října 10:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.