Cikk - vizuális magyarázatot a táblázatok egyesülési elvek mysql

Amikor adatbázisok tervezésével járó webes projektek gyakran kell kombinálni lekérdezések adatbázis táblák annak érdekében, hogy a szükséges adatokat.

Figyelmeztetés: Ez a cikk a csatlakozni állapot táblázatokban használjuk ON, vagy használják a változás. Emlékeztetem Önöket, hogy ha az oszlopot, amelyben a kombináció előfordul, ugyanaz a neve, akkor kell használni a lépésben ( `imya_stolbtsa`), egyébként a ON`` = TableA`.`imya_stolbtsa_iz_TableA` TableB`.`imya_stolbtsa_iz_TableB`

Tételezzük fel, hogy van két asztal. A táblázat (TABLEA) a bal oldalon, és a táblázat B (TableB) a jobb oldalon. Mi feltölti minden négy karakter, akiknek a nevét is jelen lehet mindkét asztalnál.

Ennek lényege, tervezés, hogy a bázis, amely automatikusan kiválasztja oszlopokat összehasonlítása és egyesítése asztalra. És ez a választás esik, hogy az oszlopok az azonos nevet. Ebben rejlik a csapdát mdash bázis kiválaszthatja az oszlopok teljesen össze és lekérdezés működik elég ahogy várható.

SELECT * FROM `TableA`

NATURAL JOIN `TableB`


Ebben az esetben a DBMS úgy dönt, hogy a táblákat az oszlopok id és nevét, hiszen jelen vannak mind a két táblában, és kiderül, hogy az eredeti kérésben a következő formában:

SELECT * FROM `TableA`

Inner join `TableB`


De mivel nincs rekordokat azonos id nevét és egyidejűleg mind a két táblában, a lekérdezés egy üres eredményt.

Ha teszünk a menedzsment elhagyta az asztalt, és módosítsa a lekérdezést:

SELECT `TableA`. *` TableB`. * FROM `TableA`

TERMÉSZETES LEFT JOIN `TableB`


Ilyen adatbázis-lekérdezés a következő:

SELECT `TableA`. *` TableB`. * FROM `TableA`

LEFT JOIN `TableB`


Az eredmény a következő lesz:

Így az alap maga dönt, hogy mely oszlopokat és hogyan kell a táblákat. Egyrészt ez nagyon kényelmes, a másik - már zavart: hol van a garancia arra, hogy az oszlopok az azonos nevű, a táblázatok pontosan a kulcsot, és úgy vannak kialakítva, hogy összekapcsolják? NATURAL JOIN rontja az olvashatóságot a kódot, a fejlesztő nem lesz képes kérésre annak meghatározására, milyen táblákat is csatlakozott. Ezért figyel az olyan tényezőket, természetes összekapcsolás nem ajánlott.

STRAIGHT REGISZTRÁCIÓ funkciója ugyanaz, mint egy hagyományos belső összekapcsolás, azzal az eltéréssel, hogy a bal oldali tábla előtt olvassa el a jobb oldalon.

SELECT * FROM `TableA`

STRAIGHT REGISZTRÁCIÓ `TableB` HASZNÁLATÁVAL (` name`)

SELECT * FROM `TableB`

STRAIGHT REGISZTRÁCIÓ `TableA` HASZNÁLATÁVAL (` name`)

Ha csatlakozik az asztalok nem adja meg csatlakozni állapotba BE vagy USING, akkor az alap fog az úgynevezett derékszögű mintavétel, ha az értéke egy táblázat érték egyenlő az egymással. Így az adatbázis, ebben az esetben vissza 4x4 = 16 vonal.

SELECT * FROM `TableA`

Ui Javítás: ID bejegyzések lehet azonos, akkor.

Kapcsolódó cikkek