Stránka 9 z 9

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 20:44
od Alesh2020
Nemá, ale já vycházel z těch písmen ABC a XY. Myslel jsem, že se to takle propojí "zig zag".

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 20:45
od Wikan
Jasně, propojí se to podle údaje, který v té tabulce není.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 20:48
od Alesh2020
Vyložil jsem si to tak, že se ty údaje propojují křížem krážem. Záměrně.

než to začnu předělávat, je teda jedno, která tabulka bude na FROM řádku?

SELECT *
FROM [Reader]
JOIN [Book] On [Book].[Book_Id] = [Reader].[Reader_Id]
JOIN [Borrowed_Books] ON [Borrowed_Books].[Date_To] = [Book].[Book_Id]

:hm

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 20:53
od Wikan
propojují křížem krážem

Nevím, co tím myslíš.

V tomhle případě je jedno, co bude u FROM. Minimálně významově, nejsem si teď jistý jak by to bylo z hlediska výkonu. Ale teď vážně nejsi tak daleko, abys tohle musel řešit.
Jinak by to ale bylo, kdyby tam byl použitý LEFT/RIGHT/FULL JOIN.

[Borrowed_Books].[Date_To] = [Book].[Book_Id] - máš pocit, že se někdy bude shodovat ID knihy a datum nějaké výpůjčky?

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:00
od Alesh2020
Koukni, já už fakt nevím, co tam mám napsat. Ale je stejně pravda, že to řve "Operand type clash: date is incompatible with int"...

[Borrowed_Books].[Book_Id] = [Book].[Book_Id]

To je poslední, co mě napadlo. Když udělám toto, tak už "něco vypadne", ale nevypada to jako výstup, který jsem dostal jako klíč k potvrzení svých výsledků.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:02
od Wikan
ale nevypada to jako výstup, který jsem dostal jako klíč k potvrzení svých výsledků

A proč by to tak nemělo vypadat? To je totiž dobře.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:11
od Alesh2020
Možná chyták. Má to být takto: https://ibb.co/K09TCXG

A jak by vypadal SELECT, co vrátí veškeré knihy, které ještě nikdy nebyly zapůjčeny?

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:17
od Wikan
Tak já neříkám, že je to celé. Zatím jsme řešili jenom propojení tabulek. Není tam vyfiltrování nechtěných řádků ani výběr jenom určitých sloupců.

K tomu druhému SELECTU potřebuješ propojit jenom dvě tabulky a to pomocí LEFT JOIN (či RIGHT, podle toho v jakém pořadí ty tabulky uvedeš). To jako nápověda stačí.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:27
od Alesh2020
Tak já neříkám, že je to celé. Zatím jsme řešili jenom propojení tabulek. Není tam vyfiltrování nechtěných řádků ani výběr jenom určitých sloupců.

A jak do toho přidat ty podmínky?
"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"

DROP [Reader_Id], [Phone], [Address], [Age], [Email], [Book_Id], [ISBN13], [Author], [Reader_Id], [Book_Id] na odstranění nežádoucích sloupců mi přijde značně kostrbaté. A stejně to nic nedělá.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:29
od Wikan
Řádky se filtrují pomocí WHERE. Pokud jde o sloupce, tak si prostě vypíšeš potřebné sloupce za SELECT místo hvězdičky.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:34
od Alesh2020
A k tomu druhému:

SELECT
book.id
[Book].[Name]
FROM
Book
LEFT JOIN
Book ON [Book].[Name] = [Name]

-- 16. 1. 2022 20:41 --

SELECT *
FROM [Reader]
JOIN [Book] On [Book].[Book_Id] = [Reader].[Reader_Id]
JOIN [Borrowed_Books] ON [Borrowed_Books].[Book_Id] = [Book].[Book_Id]

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:45
od Wikan
Nějak nevidím, že bys tam propojoval ty dvě tabulky.

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:51
od Alesh2020
A jak se to dělá?

Re: SQL - jak uložit databázi

Odeslat příspěvekNapsal: 16. 1. 2022 21:52
od Wikan
Tak snad když byly v předchozím případě propojené tři tabulky, tak z toho dokážeš udělat propojení jenom dvou, ne?