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 19:44

Nemá, ale já vycházel z těch písmen ABC a XY. Myslel jsem, že se to takle propojí "zig zag".
Á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 19:45

Jasně, propojí se to podle údaje, který v té tabulce není.
Wikan
Moderátor
Uživatelský avatar

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

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
Á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 19:53

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?
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 20:00

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ů.
Á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 20:02

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.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 20:11

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?
Á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 20:17

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čí.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 20:27

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á.
Á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 20:29

Řádky se filtrují pomocí WHERE. Pokud jde o sloupce, tak si prostě vypíšeš potřebné sloupce za SELECT místo hvězdičky.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 20:34

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]
Á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 20:45

Nějak nevidím, že bys tam propojoval ty dvě tabulky.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Alesh2020 16. 1. 2022 20:51

A jak se to dělá?
Á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 20:52

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?
Wikan
Moderátor
Uživatelský avatar

Předchozí stránka

Kdo je online

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