Sql - lecke 6

A legegyszerűbb csatlakozás szintaxisa:

SELECT tbl_name_table_1, tbl_name_table_title_2 FROM tbl_name_1, tbl_name2;

Hozzunk létre egy egyszerű csatlakozást:
Kiderült, nem egészen, amit vártunk. Az ilyen uniót tudományosan úgynevezett Descartes-terméknek nevezzük, amikor az első táblázat minden sorát a második táblázat minden sorához társítjuk. Talán vannak olyan esetek, amikor egy ilyen társulás hasznos, de ez nyilvánvalóan nem a mi esetünk.

Figyeljen két dologra:

· Ha az egyik csatlakozott táblában olyan karakterlánc található, amelynek azonosítója nincs a másik csatlakozott táblában, akkor a kapott táblában nem lesz vonal ilyen azonosítóval. Példánkban létezik Oleg felhasználó (id = 5), de nem hoz létre szálakat, így a lekérdezésnek nincsen.

· Egy feltétel meghatározásakor az oszlop neve az oszlop nevét tartalmazó táblázat neve után íródik (a ponton keresztül). Ez azért van így, hogy elkerülje a zavarodottságot, mivel a különböző táblázatok oszlopai ugyanazokkal a nevekkel rendelkezhetnek, és a MySQL nem tudja megérteni, hogy milyen konkrét oszlopokról beszélünk.

Általánosságban elmondható, hogy a helyes szintaxis a feltételhez való kombinációval így néz ki:

Ha az oszlopnév egyedi, akkor az asztalnév elhagyható (mint a példában), de ez nem ajánlott.

Ahogyan megértetted, a szakszervezetek lehetővé teszik, hogy bármelyik táblázattól származó információt kiválasszon, és az összeolvadt táblák három vagy négy lehetnek, és az egyesítés feltétele nem feltétlenül lehet.

Ezért, ha egy kicsit eltérő kérést kell tennünk - hogy kivonjuk az összes felhasználót és az általuk létrehozott témákat, ha van ilyen - akkor a Külső Uniót kell használnunk. Lehetővé teszi egy táblázat és az ahhoz tartozó sorok összes sorának megjelenítését egy másik táblából. Az ilyen társulásokról a következő leckében fogunk beszélni.
SQL - 7. lecke: táblák kombinálása (külső csatlakozás)

Tehát az utolsó lecke során le kell vonnunk az összes létrehozott felhasználói és témákat, ha vannak ilyenek. Ha kihasználjuk az utolsó leckében vizsgált belső egyesület előnyeit, akkor a következőkkel jutunk el:
Ez azt jelenti, hogy a kapott táblában csak azok a felhasználók alkotják a témát. És meg kell látnunk az összes nevet. Ehhez kicsit megváltoztatjuk a lekérdezést:

SELECT users.name, topics.topic_name

A felhasználók BAL KÜLSŐ CSATLAKOZÁS témáitól

És megkapja a kívánt eredményt - minden felhasználó és a létrehozott témák. Ha a felhasználó nem hozott létre témát, de a megfelelő oszlop NULL.
Így hozzáadtuk a lekérdezéshez a LEFT OUTER JOIN kulcsszót. jelezve, hogy a bal oldali táblázatban meg kell venni az összes sort, és a WHERE kulcsszót BE-ra kell állítani. A bal oldali külső kapcsolat kulcsszó mellett a RIGHT OUTER JOIN kulcsszó is használható. Ezután a bal oldali táblázatból a jobb oldali táblázatból és a hozzájuk tartozó összes sorból kiválasztjuk a sorokat. Végül teljes külső csatlakozás lehetséges, amely mindkét táblázatból kivonja a sorokat, és összekapcsolja azokat, amelyek összekapcsolhatók. A teljes külső csatlakozás kulcsszava teljes KÜLSŐ CSATLAKOZÁS.

Változtassunk kérésünkben a bal oldali egységet a jobb oldalon:
Amint látja, most már minden téma van (a jobb oldali táblázat összes vonala), de a felhasználók csak azok alkotják a témákat (azaz csak azokat a sorokat, amelyek a jobb oldali táblához társulnak, a bal oldali táblázatból vannak kiválasztva).
Sajnos a MySQL nem támogatja a teljes adatbázis-konszolidációt.
Lássuk össze ezt a rövid leckét. A külső csatlakozás szintaxisa:

SELECT tbl_name_1.column_name, tbl_name_2.sav oszlopnév

FROM tbl_name_1 TÁRSASÁG TÍPUSA tbl_name_2

ahol a TÁRSASÁGI TÍPUS BAL KÜLSŐ CSATLAKOZÁS, vagy RIGHT OUTER JOIN

Kapcsolódó cikkek