【问题标题】:A table with 2 foreign keys referencing the same table [duplicate]具有2个外键引用同一个表的表[重复]
【发布时间】:2018-10-27 04:33:34
【问题描述】:

我有一个表,其中有 2 个外键引用同一个表。想如何打印出加入内容?我正在使用 SQLite

表A

S.NO  Col1   Col2
1    | a   |  b
2    | f   |  g
3    | d   |  e

表B

S.NO  Col3 
a    | apple   
b    | ball
f    | frog
g    | grape
d    | dog
e    | eat

如何打印以下内容?

S.NO |Col1  | Col2 | Col3| Col4
1    | a    |apple |  b  | ball
2    | f    |frog  |  g  | grape
3    | d    |dog   |  e  | eat

我试过了

SELECT TableA.Col1, TableB.Col3, TableA.Col1 
FROM TableA, TableB
WHERE TableA.Col1 = TableB.Col3
AND TableA.Col2 = TableB.Col3

感谢您的帮助。

【问题讨论】:

  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它
  • 不必有 FK 即可加入。了解表格含义是必要且充分的。对您来说重要的是某些列在某些表之间是相等的。别名让您可以多次使用同一个表的值。

标签: sql sqlite relational-database


【解决方案1】:

两个内连接就可以了:

select 
    a.sno, a.col1, b1.col3, a.col2, b2.col3
  from tablea a
  join tableb b1 on b1.sno = a.col1
  join tableb b2 on b2.sno = a.col2

注意tableb 加入了两次。在这种情况下,您需要每次给它一个不同的别名:b1b2。否则将没有明确的方式来引用每个列。

【讨论】:

    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2010-10-09
    • 2015-02-24
    • 2010-11-23
    相关资源
    最近更新 更多