使用外键连接表

时间:2014-04-05 00:56:09

标签: mysql sql

我如何INNER JOIN一个包含2个外键的表作为主键?

CREATE TABLE table1 (table1ID CHAR(4));
CREATE TABLE MEM_INSTR (table2ID CHAR(4));
CREATE TABLE table3 (table1ID CHAR(4), table2ID CHAR(4));

2 个答案:

答案 0 :(得分:1)

假设你想按键建议加入所有内容......

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

但是,假设您有这种情况。

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

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

让我们说为了论证,Table1可以有多个具有相同Table1ID的记录,而Generation用作辅助密钥。并且您需要将Table2记录加入正确的单个 Table1记录。您可以像展开ON子句一样展开WHERE子句。

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

答案 1 :(得分:0)

你像往常一样加入它,没有什么特别之处。所以你会这样:

SELECT ...
FROM table1
INNER JOIN table3 ON table3.table1ID = table1.table1ID
INNER JOIN MEM_INSTR ON MEM_INSTR.table2ID = table3.table2ID