sql >> Databáze >  >> RDS >> Mysql

Spojení stolů pomocí cizích klíčů

Za předpokladu, že chcete jen spojit vše dohromady, jak naznačují klíče...

SELECT *
FROM table1
INNER JOIN table3 on table3.table1ID = table1.table1ID
INNER JOIN MEM_INSTR on MEM_INSTR.table2ID = table3.table2ID

Ale řekněme, že máte tento scénář.

CREATE TABLE Table1 (
    Table1ID NUMBER, 
    Generation NUMBER, 
    ... 
);

CREATE TABLE Table2 (
    Table2ID NUMBER, 
    Table1ID NUMBER, 
    Table1Generation NUMBER, 
    ...
);

Pro argumentaci řekněme, že Tabulka1 může mít více záznamů se stejným ID tabulky a Generování se používá jako sekundární klíč. A musíte připojit záznam Table2 ke správnému singlu Záznam tabulky 1. ON můžete rozbalit klauzuli stejným způsobem, jakým byste rozšířili WHERE doložka.

SELECT *
FROM table1 t1
INNER JOIN table2 t2 
    ON t2.table1id = t1.table1id 
    AND t2.table1generation = t1.generation


  1. Připojení MSSQL pomocí PHP

  2. SQL Server:vrátí názvy sloupců na základě hodnoty záznamu

  3. MySQL CREATE USER s proměnnou?

  4. Schéma databáze pro ACL