NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 10 - MS-SQL krok za krokem: Další dotazy a vazba M:N

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Jan Troják
Michal Žůrek - misaz:28.9.2017 21:04

dík za upozornění. Ani malé as ani chybějící středník však nemění funkčnost kódu. Střeník je v T-SQL povinný, jen pokud máš více příkazu za sebou a velikost písmen klíčových slov nerozlišuje.

 
Odpovědět
28.9.2017 21:04
Avatar
Jan Troják
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Jan Troják:28.9.2017 23:16

Já vím, ale vypadá to blbě, když to je jednou malé a jednou velké + to někoho může zmást

 
Odpovědět
28.9.2017 23:16
Avatar
blazoid
Člen
Avatar
blazoid:17.6.2018 19:01

Ahoj, mám dotaz, který se týká vazeb, dále ale i nějakého přiřazení nějaké tabulky k položce jiné tabulky:

Dejme tomu, že mám tabulku "platby", kde jsou evidovány veškeré ekonomické transakce v rámci podniku. Dále budu mít tabulku "bezhotovostní platby", kde budou evidovány veškeré platby provedené například převodem a tabulku "hotovostní platby", kde budou evidovány veškeré platby v hotovosti. Důvodem, proč je to takto rozděleno je, že bezhotovostní platby mají jiné atributy než platby v hotovosti (například bezhotovostní budou mít variabilní symbol, číslo účtu - naproti tomu hotovostní mají zase údaj o osobě, od které byla platba přijata, dál mě nic nenapadá...:-))

V tabulce "platby" budu chtít odkazovat na id buď v tabulce "bezhotovostní platby" nebo na id v tabulce "hotovostní platby", přičemž chci odkazovat pouze na jednu z tabulek (dejme tomu, že je dáno pravidlo, že ke každé platbě se může vázat pouze jeden typ transakce) podle toho, jakým způsobem platba proběhla. Jednou z možností je programově ošetřit to, že v případě zaevidování platby bude vyplněno pouze id jednoho typu transakce a ve druhém bude null (program přiřazení dvou typů transakcí prostě nepovolí), mě však spíš zajímá, zda se toto dá ošetřit i nějak elegantně přímo v databázi (tedy, už je v jednom ze sloupců transakcí id vyplněno, typ transakce již této platbě byl přiřazen, nebude tedy povoleno přiřadit druhý typ - databáze to nedovolí)....

Díky za odpovědi :-)

 
Odpovědět
17.6.2018 19:01
Avatar
Odpovídá na Michal Žůrek - misaz
Jakub Ondrák:21.6.2018 16:55

ne, pak si musíš dávat pozor akorát na LEFT a RIGHT joiny.

Zkoušel jsem to v minulé lekci, a je to jedno i co do LEFT a RIGHT JOINů :-O . Přijde mi, že se to left/right váže k postavení co k čemu připojujeme. Např. u FROM [Clanky] JOIN [Uzivatele] když je LEFT, tak se zahrnou všechny záznamy vlevo (tj. v tabulce Clanky); u RIGHT zase vše, co je v tabulce Uzivatele

 
Odpovědět
21.6.2018 16:55
Avatar
Odpovídá na Jakub Ondrák
Michal Žůrek - misaz:21.6.2018 17:59

asi jo, nikdy mě nenapadlo to zkoušet.

 
Odpovědět
21.6.2018 17:59
Avatar
Mattias Kundert:17.10.2021 22:00

Ahoj chci se zeptat jak kód upravit aby se vždy zobrazil jeden titulek článku a pod ním obsahy všech jeho komentářů? Díky za odpověď.

static void Main(string[] args)
        {
            string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\kunde\Desktop\Kódy\RedakcniSystemDB\Database.mdf; Integrated Security = True";
            //Console.WriteLine(connectionString);

            using (SqlConnection pripojeni = new SqlConnection(connectionString))
            {
                pripojeni.Open();
                Console.WriteLine("Aplikace se úspěšně připojila k databázi.");

                using (SqlCommand command = new SqlCommand("SELECT [Clanky].[Titulek], [Komentare].[Obsah] FROM [Clanky] JOIN [Komentare] ON [Komentare].[ClanekId] = [Clanky].[Id]", pripojeni))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine();
                            Console.WriteLine(reader["Titulek"]);
                            Console.WriteLine(reader["Obsah"]);
                        }
                    }
                }
            }
            Console.ReadKey();
        }
Editováno 17.10.2021 22:02
 
Odpovědět
17.10.2021 22:00
Avatar
Jaroslav Drobek:24.10.2022 16:09

Off topic (Hodnocení dílčího kvízu po 11.lekci):
Řekli byste po této lekci, že výroky

  • "V MS-SQL neexistuje vazba M:N."
  • "Pokud při spojování tabulek není pojmenování sloupců jednoznačné, spojení nelze uskutečnit."

jsou nepravdivé? Tak pozor na následující dílčí test!

 
Odpovědět
24.10.2022 16:09
Avatar
Jaroslav Drobek:3.11.2022 19:53

..a taky na závěrečný test.

 
Odpovědět
3.11.2022 19:53
Avatar
Martin Pěnička:21.4.2023 12:06

Chtělo by to schéma UML, aby se dalo v databázových tabulkách vyznat.

 
Odpovědět
21.4.2023 12:06
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 10 zpráv z 24.