Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - MS-SQL krok za krokom: Ďalšie dopyty a väzba M:N

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá 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.

Avatar
Jan Troják
Člen
Avatar
Odpovedá 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

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 :-)

Avatar
Odpovedá 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

Avatar
Odpovedá na Jakub Ondrák
Michal Žůrek - misaz:21.6.2018 17:59

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

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();
        }
Editované
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!

Avatar
Jaroslav Drobek:3.11.2022 19:53

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

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.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 24.