Autor | Zpráva | ||
---|---|---|---|
xhelliosx Profil |
#1 · Zasláno: 8. 3. 2017, 14:07:05
Ahoj, moc rád bych, kdyby mi byl někdo schopen malinko pomoct s tím, co mám udělat, abych mohl vyřešit dané otázky. SQL je pro mne španělská vesnice, ještě chápu, jak se ptát na položky v jedné tabulce příkazem select, ale když mám více tabulek dohramady, tak to nedávám. Ocnil bych třeba jen příklad, jak to konkrétně mám dělat a zbytek bych snad už pochopil. Děkuji.
![]() ![]() |
||
Kajman Profil |
#2 · Zasláno: 8. 3. 2017, 15:10:16
Mrkněte např. na seriál www.linuxsoft.cz/article_list.php?id_kategory=232
a tam na kapitoly 20-27. |
||
xhelliosx Profil |
#3 · Zasláno: 8. 3. 2017, 16:03:04
No já právě nechápu, jak mám vyhledat v tom mém príkladu, třeba ta první otázka bere data ze 3. tabulek, takže bych to měl formulovat SELECT jmeno,Prijmeni,D_VYP..... a z jaký tabulky brát?? Jsem asi hloupej.
|
||
Kajman Profil |
#4 · Zasláno: 8. 3. 2017, 16:11:58
Spojení tabulek je v kapitolách 20 a 21. Tipuji, že jste je stále nečetl.
www.linuxsoft.cz/article.php?id_article=827 www.linuxsoft.cz/article.php?id_article=837 |
||
xhelliosx Profil |
#5 · Zasláno: 8. 3. 2017, 16:45:49
Kajman:
dobře, zkusím to, jak jsem to pochopil, SELECT ID_Ctenare(555),jmeno,Prijmeni,D_VYP,EVID_CIS FROM vypujcka JOIN ID_Ctenare_vyp=ID_Ctenare, JOIN EVID_CIS=EVID_C tak takhlejsem to pochopil já, jiank už fakt nevím |
||
Tomášeek Profil |
#6 · Zasláno: 8. 3. 2017, 16:58:59
xhelliosx:
„tak takhlejsem to pochopil já, jiank už fakt nevím“ Můžeš odkázat na konkrétní příklad, který toto tvrdí z těch dvou kapitol? Jen napovím, že ta správná kapitola pro řešení tohoto příkladu je ta s číslem 21. Škoda, že ses zasekl hned na té první uvedené. |
||
xhelliosx Profil |
#7 · Zasláno: 8. 3. 2017, 17:24:36
SELECT ID_Ctenare(555), jmeno, Prijmeni,D_VYP, EVID_CIS
FROM vypujcka JOIN ctenar ON ID_Ctenare_vyp=ID_Ctenare, FROM vypujcka JOIN exemlar ON EVID_CIS=EVID_C je to lepší? |
||
Keeehi Profil |
#8 · Zasláno: 8. 3. 2017, 17:33:54
No, ještě se nauč, jak se filtrují data.
www.linuxsoft.cz/article.php?id_article=819 Nebo ještě lépe, přečti si celý seriál. |
||
xhelliosx Profil |
#9 · Zasláno: 8. 3. 2017, 17:44:34
SELECT ID_Ctenare, jmeno, Prijmeni,D_VYP, EVID_CIS
FROM vypujcka JOIN ctenar ON ID_Ctenare_vyp=ID_Ctenare WHERE ID_Ctenare=555 vypujcka JOIN exemplar ON EVID_CIS=EVID_C další pokus po přečtení nemám nainstalovanou tu databázi, ve škole nám dala jen tento obrázek, odříkala příkazy a já na to teď koukám jak tele na nový vrata,tak se omlouvám |
||
Keeehi Profil |
#10 · Zasláno: 8. 3. 2017, 17:55:51
No, skoro dobře. To where patří až za všechny joiny.
No a ještě ti tam podle zadání chybí to řazení. |
||
xhelliosx Profil |
#11 · Zasláno: 8. 3. 2017, 18:09:42 · Upravil/a: Moderátor (editace znemožněna) 8. 3. 2017, 21:45:35
Moderátor Kajman: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() SELECT ID_Ctenare, jmeno, Prijmeni,D_VYP, EVID_CIS FROM vypujcka JOIN ctenar ON ID_Ctenare_vyp=ID_Ctenare JOIN exemplar ON EVID_CIS=EVID_C WHERE ID_Ctenare=555 vypujcka ORDER BY evid_c DESC tak snad konečně |
||
Tomášeek Profil |
#12 · Zasláno: 8. 3. 2017, 18:43:51
xhelliosx:
„tak snad konečně“ Pokud to vybere správná data, tak ano, konečně. Pokud to správná data nevybere, bádej dál. Spousta (i jednoduchých) SQL dotazů pracujících s více tabulkami a tedy i JOIN em se dá najít kromě odkázaného tutoriálu i zde na diskusi. Zkus je pohledat.
„nemám nainstalovanou tu databázi“ Tím jsi měl začít. Bez možnosti testovat své výtvory se nikam nepohneš (nepočítám metodu "napíšu na DJPW a počkám, až to za mě někdo udělá, výsledek pak jen zkopíruju a budu mít úkol hotový"). Nainstaluj si lokální webserver, databázi a jednotlivé příklady od lehčích po těžších (v tutoriálu) si zkoušej, ať pochopíš, co dělají. Upozorním tě, že naučit se základ SQL včetně pochopení (a zpracování vybraných dat, typicky v PHP) není otázkou hodiny ani odpoledne, budeš tomu muset věnovat řádově více času. |
||
Keeehi Profil |
#13 · Zasláno: 8. 3. 2017, 19:55:36
Lokální databáze je určitě vhodné řešení které bych doporučil. V nouzi nejvyšší se dá ještě použít sqlfiddle.com nebo ideone.com ale praktické to není, jelikož je to příšerně pomalé.
|
||
Kajman Profil |
#14 · Zasláno: 8. 3. 2017, 22:08:51
xhelliosx:
Při spojování tabulek je dobré před sloupci uvádět, ze které tabulky jsou. Hlavně je to potřeba, pokud by se ve více tabulkách jmenovaly stejně sloupce, se kterými se v dotaze pracuje. Pro lepší orientaci lze použít aliasy (např. v, c, e). SELECT c.id_ctenare, c.jmeno, c.prijmeni, v.d_vyp, v.evid_cis FROM vypujcka v JOIN ctenar c ON v.id_ctenare_vyp = c.id_ctenare JOIN exemplar e ON v.evid_cis = e.evid_c WHERE c.id_ctenare = 555 ORDER BY e.evid_c DESC Váš dotaz by také asi fungoval, jen tam je ve where části nesmyslné slovo vypujcka. A pokud budete řadit podle v.evid_cis, tak nepotřebuje vůbec připojovat tabulku exemplar. Souhlasím, že na naučení je lepší si ty dotazy zkoušet. Na mysql se dá použít např. demo admineru, to bývá svižné, ale musíte si pak dotazy ukládat někam k sobě a také si vytvořenou databázi vyexportovat a uložit pro příští použití. Lokálně pak můžete použít i databázi SQLite, která se neinstaluje do systému jako služba, ale klient jednoduše vytvoří někde na disku soubor. Klientem může být např. plugin do firefoxu. Pro zkoušení dotazů si samozřejmě musíte ty tabulky vytvořit a naplnit provázanými daty. Škoda, že vám učitelka nachystanou databázi nedala k dispozici. |
||
xhelliosx Profil |
#15 · Zasláno: 8. 3. 2017, 22:49:41
moc děkuji za rady
|
||
Časová prodleva: 6 let
|
0