Autor | Zpráva | ||
---|---|---|---|
d.b.cooper Profil * |
Zdravím
dnes jsem narazil v DB na 'pohledy' našel jsem si že se základní pohled vytvaří create view novyPohled as select * from mojeTabulka; ale nenašel jsem možnost je v phpmyadminovy editovat navíc je to pohled do jiné DB jak se řeší pžipojení ? ... 1) mohl by mi někdo prosím napsat přiklad pohledu i s připojením ? 2) jednou vytvoreny pohled už nelze editovat ? předem díky za info Moderátor juriad: Vkládej do [>pre] jen zdrojové kódy; děkuji.
|
||
juriad Profil |
d.b.cooper:
Pohled je pojmenovaný SELECT. V MySQL je možné vytvářet pohledy jen uvnitř jednoho databázového serveru (nikoli tedy připojením k jinému), může se však odkazovat na tabulky v jiné lokální databázi. Pohled slouží k zjednodušení zápisu dotazů. Představ si, že máš tabulku produktů v eshopu a produkty průběžně přibývají a mizí. Chceš tedy nabízet jen aktuální produkty, ale v databázi stále chceš mít informaci o těch již neprodávaných (třeba pro účely faktur a reklamací). Vytvoříš si tedy pohled: CREATE VIEW current_products AS SELECT * FROM products WHERE archived = 0; Tedy třeba takto a už se nemusíš zabývat těmi archivovanými: SELECT * FROM current_products WHERE price > 1000; Z tohoto důvodu nelze pohled editovat. Nemá to smysl - je to aktuální pohled na data v jiných tabulkách. Měnit jej by znamenalo měnit data v původních tabulkách (některé databáze, včetně MySQL to za určitých podmínek umožňují). Měnit definici VIEW lze pomocí příkazu ALTER VIEW ... , viz dokumentace.
Příklad s použitím tabulky v jiné databázi je triviální, jen napíšeš před název tabulky název databáze (kvalifikuješ název tabulky). Máš-li v DB1 tabulku T1 a v DB2 také tabulku T1 (chci jen ukázat shodu jmen), tak můžeš vytvořit view v DB1 obsahující řádky, které jsou v obout tabulkách: CREATE VIEW DB1.spolecne AS SELECT d1t1.* FROM DB1.T1 AS d1t1 JOIN DB2.T1 AS d2t1 ON d1t1.id = d2t1.id; |
||
d.b.cooper Profil * |
#3 · Zasláno: 22. 4. 2015, 08:58:16
děkuju za vysvětlení vážím si tvého času :) jen bych potřeboval ještě pár věcí ujasnit
k 1) mam troje přihlašovací údaje (databaze pro web [tabulky webu], databaze pro statistiky [tabulky statistik pro více webů včetně mého], třetí přístup kde jsou všechny databáze [mám ho používat pro přístup přes phpmyadmina ... vidím hned vše nemusím se přepínat a je na moje jméno tudíž je přehled co kdo udělal ...] ) ale pokud se přihlásím prvním připojením (přes phpmyadmina což bych neměl ... ale je to tak v configuraci webu) vidím pohled do druhé databáze ale jak to jelikož tenhle účet přece nemá práva vidět do téhle DB ... ? (respektive to můžu na velkém servru (třeba nějaký hosting) kde mám pronajatý malý prostor se zkoušet připojovat do prostoru jiných uživatelů ... ? ...) 2) problém ani není tak že pokud pohled napíšu špatně a chci ho opravit musím ho smazat a napsat znovu ... spíš mě vadí že se nemůžu (jako laik :) ) podívat editací jak byl pohled napsán zvlášť když sem ho nevytvářel jak pak můžu vědět co je tam nastaveno za podmínky ... |
||
juriad Profil |
#4 · Zasláno: 22. 4. 2015, 09:19:59
d.b.cooper:
1) Právě jsem to vyzkoušel; jako uživatel root jsem vytvořil view napříč dvěma DB. Více viz níže. 2) Můžeš spustit příkaz: SHOW CREATE VIEW <název-view>; Například pro view vytvořené jako (pro dvě pokusné tabulky, které jsem někde vyšťoural): create view a as select ud.*, username from udalosti ud join test.users us on ud.id = us.id; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `a` AS select `ud`.`cas` AS `cas`,`ud`.`name` AS `name`,`ud`.`id` AS `id`,`us`.`username` AS `username` from (`pokus`.`udalosti` `ud` join `test`.`users` `us` on((`ud`.`id` = `us`.`id`))) |
||
juriad Profil |
Ještě doplním, že VIEW lze takto krásně použít pro sdílení tabulek mezi databázemi. Prostě jej založí uživatel, který má práva na obě databáze a všichni ostatní jej mohou používat. Toto VIEW pak bude definované triviálně jako:
SELECT VIEW tabulka AS SELECT * FROM JINA_DB.tabulka; |
||
d.b.cooper Profil * |
#6 · Zasláno: 22. 4. 2015, 09:29:01
tak se omloiuvam 1) je vyřešená opravdu to nejde a to byl důvod proč jsem se o to celé začal zajímat :) web byl přesunut a databáze rozděleny proto mi to nefungovalo i když jsem sql dotaz zkopíroval do mého "třetího" přihlášení v phpmyadminu kde to samozřejmě šlo ...
|
||
d.b.cooper Profil * |
#7 · Zasláno: 22. 4. 2015, 13:47:25
neměl jsem refreshnuto ... každopádně přínosné informace díky :)
jinak 2) nenapadlo mě že jde udělat exportem popřípadě v mé verzi phpmyadminu je pod výpisem sloupců v záložce "struktura" přehlídnutelný odkaz "Upravit pohled" ... |
||
Časová prodleva: 8 let
|
0