SQL - jak uložit databázi

Všechny ostatní programy, které nemají samostatnou sekci

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Alesh2020 16. 1. 2022 17:33

Jenže nejřív to musíš seskupit, abys mohl říct, že má nějaká skupina více prvků.
> Jak se to dělá?

A tady je to s JOIN, ale pořád mi to píše errory.
SELECT [Surname], [Name]
FROM [Reader]
JOIN [Book] ON [Book].[Name] = [Reader].[Surname]
ORDER BY [Name]


Vytvořit SELECT, který vrátí jména veškerách čtenářů, kteří si v historii vzali alespoň jednu knihu. K jejich jménům (Reader – Surname + Name) doplnit jméno knihy (Book – Name). Dále zjisti, jak dlouho ji meli u sebe - nepotřebujeme zobrazovat čtenáře, kteří knihy mají u sebe, a ještě je nevrátili.
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 17:37

Jak se to dělá?

No pomocí toho GROUP BY.
pořád mi to píše errory

Pokud nenapíšeš jaké, nedá se poradit.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 17:38

Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'Name'.

Prostě z Reader chci převzít Surname a Name...
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 17:40

To ti říká, že sloupec Name je ve více tabulkách, takže musíš specifikovat, jaký přesně myslíš.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 17:44

Hmm. no, u C# by to bylo this.nazev... a tady se to dělá přes aliasy?

To mám napsat toto:

SELECT [Surname], [Name] AS [N]
FROM [Reader]
JOIN [Book] ON [Book].[Name] = [Reader].[Surname]
ORDER BY [N]
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 17:45

Tak přes alias to samozřejmě dělat můžeš. A nebo se taky můžeš zamyslet nad tím, proč je tam "[Book].[Name] = [Reader].[Surname]".

Teď pomíjím to, že to propojení je nesmyslné. Jde mi jenom o syntaxi.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 17:48

https://ibb.co/MGKDNw4

Děkuji, teď to funguje, ale i tak, data jsou prázdná...

"Vytvořit SELECT, který vrátí jména veškerách čtenářů, kteří si v historii vzali alespoň jednu knihu. K jejich jménům (Reader – Surname + Name) doplnit jméno knihy (Book – Name). Dále zjisti, jak dlouho ji meli u sebe - nepotřebujeme zobrazovat čtenáře, kteří knihy mají u sebe, a ještě je nevrátili."

Jestli sem ten "slovní popis" blbě nepřebouchal do té SQL syntaxe,,,
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 17:50

Jestli sem ten "slovní popis" blbě nepřebouchal do té SQL syntaxe,,,

BINGO
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 17:53

Vytvořit SELECT, který vrátí jména veškerách čtenářů, kteří si v historii vzali alespoň jednu knihu SELECT [Surname], [Book].[Name] FROM [Reader]

K jejich jménům (Reader – Surname + Name) doplnit jméno knihy (Book – Name).
JOIN [Book] ON [Book].[Name] = [Reader].[Surname]

Jak tam ovšem nacpat tu podmínku "at least one book in history" a taky "day of the book at home"?
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 17:58

No tak už ta podmínka pro propojení tabulek je nesmysl. V podstatě se ptáš na čtenáře, jejichž příjmení se shoduje s názvem nějaké kníhy.
A na ten zbytek se nedá odpovědět bez znalosti struktury databáze.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 18:01

"Vytvořit SELECT, který vrátí jména veškerách čtenářů, kteří si v historii vzali alespoň jednu knihu. K jejich jménům (Reader – Surname + Name) doplnit jméno knihy (Book – Name). Dále zjisti, jak dlouho ji meli u sebe - nepotřebujeme zobrazovat čtenáře, kteří knihy mají u sebe, a ještě je nevrátili."

Kód: Vybrat vše
3.1 Vytvoření TABULEK
CREATE TABLE Reader
(
Reader_Id INT PRIMARY KEY,
Surname VARCHAR(100),
Name VARCHAR(100),
Phone VARCHAR(9),
Address VARCHAR(200),
Age INT,
Email VARCHAR(50)
);

CREATE TABLE Borrowed_Books
(
Reader_Id INT,
Book_Id INT,
Date_From date not null,
Date_To date
PRIMARY KEY (Reader_Id, Book_Id)
);

CREATE TABLE Book
(
Book_Id INT PRIMARY KEY,
ISBN13 VARCHAR(17),
Name VARCHAR(200),
Author VARCHAR(200)
);

3.2 Naplnění TABULEK
--Reader
INSERT INTO Reader (Reader_Id, Surname, Name, Phone, Address, Age, Email) VALUES (1, 'Laušman', 'Jakub', '724348286', 'Kohoutových 696/8, P-5',37,'jakub.lausman@seznam.cz');
INSERT INTO Reader (Reader_Id, Surname, Name, Phone, Address, Age, Email) VALUES (2, 'Polcarová', 'Michaela', '603598652', 'Neustupného 1835, P-13',25,'michaela.polcarova@gmail.com');
INSERT INTO Reader (Reader_Id, Surname, Name, Phone, Address, Age, Email) VALUES (3, 'Barták', 'Jaromír', '703524687', 'Anežky Krásnohorské, Praha',50,'jaromir.bartak@base.cz');
INSERT INTO Reader (Reader_Id, Surname, Name, Phone, Address, Age, Email) VALUES (4, 'Barták', 'Jan', '609854325', 'Velká Ohrada 5, Praha',40,'jbartak@atlas.cz');
INSERT INTO Reader (Reader_Id, Surname, Name, Phone, Address, Age, Email) VALUES (5, 'Žišková', 'Martina', '603589621', 'Háje 5, Praha',18,'martina.ziskova@base.cz');

--Borrowed_Books
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (1, 5, cast( '2020-06-01' as DATE), NULL);
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (1, 1, cast( '2019-05-12' as DATE), cast('2019-06-02' as DATE));
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (4, 6, cast( '2020-11-28' as DATE), NULL);
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (3, 12, cast( '2020-07-02' as DATE), cast('2020-10-12' as DATE));
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (3, 6, cast( '2019-01-02' as DATE), cast('2019-02-25' as DATE));
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (3, 10, cast( '2020-11-30' as DATE), NULL);
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (1, 9, cast( '2019-05-15' as DATE), cast('2019-05-30' as DATE));
INSERT INTO Borrowed_Books (Reader_Id, Book_Id, Date_From, Date_To) VALUES (2, 8, cast( '2019-05-15' as DATE), cast('2019-05-30' as DATE));

--Book
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (1, '978-80-7661-137-5', 'Deník malého poseroutky 15 - Samá voda', 'Jeff Kinney');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (2, '978-80-7661-137-5', 'Deník malého poseroutky 15 - Samá voda', 'Jeff Kinney');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (3, '978-80-7661-137-5', 'Deník malého poseroutky 15 - Samá voda', 'Jeff Kinney');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (4, '978-80-247-4484-1', 'Komunikace a prezentace - Umění mluvit, slyšet a rozumět – 2. vydání', 'Jiří Plamínek');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (5, '978-80-7662-068-1', 'Království', 'Jo Nesbo');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (6, '978-80-7662-068-1', 'Království', 'Jo Nesbo');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (7, '978-80-247-4431-5', 'Time management - Mějte svůj čas pod kontrolou', 'Kolektiv autorů');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (8, '978-80-247-5620-2', 'Projektový management', 'Jan Doležal');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (9, '978-80-247-5620-2', 'Projektový management', 'Jan Doležal');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (10, '978-80-7390-235-3', 'Kytice', 'Karel Jaromír Erben');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (11, '978-80-7390-235-3', 'Kytice', 'Karel Jaromír Erben');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (12, '978-80-7390-235-3', 'Kytice', 'Karel Jaromír Erben');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (13, '978-80-7390-235-3', 'Kytice', 'Karel Jaromír Erben');
INSERT INTO Book (Book_Id, ISBN13, Name, Author) VALUES (14, '978-80-7390-235-3', 'Kytice', 'Karel Jaromír Erben');
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 18:04

No tak v první řadě potřebuješ v tom dotazu propojit všechny tři tabulky.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 18:08

LEFT JOIN Reader ON Book LEFT JOIN Borrowed_Books ON [Book].[Name] = [Reader].[Surname];
Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 16. 1. 2022 18:15

Kde tam máš sloupce pro spojení? A jsi si jistý, že chceš použít LEFT JOIN?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 18:17

Ách jo, kam si má teda člověk psát poznámky... :hm
Alesh2020
Junior
Uživatelský avatar

Předchozí stránkaDalší stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků