【问题标题】:SQL JOIN on column with two othersSQL JOIN 与其他两个列
【发布时间】:2021-12-01 03:47:19
【问题描述】:

我有以下表格:

表1:

id name model
2 2 ar
1 1 st

表2:

id name model2
2 2 th
1 1 st

表键:

model model number
ar 127
st 234
th 338

并尝试创建一个如下表:

表格结果:

id name model model2 model number_1 model number_2
2 2 ar th 127 338

如何将两个表与键表连接两次?我使用左外连接,但“型号 1”可以与型号 1 或型号 2 匹配,我需要在新列中再次使用“型号”,但用于型号 2

【问题讨论】:

  • 您当前的 SQL 请求是什么?另外,你可以为你的数据库添加标签吗? (mysql, sql-server ...)

标签: sql join


【解决方案1】:

您可以使用两个不同的别名加入 table_keys 两次:

SELECT    t1.id, t1.name, t1.model, t2.model2,
          tk1.model_number AS model_number_1,
          tk2.model_number AS model_number_2
FROM      table1 t1
JOIN      table2 t2 ON t1.id = t2.id AND t1.name = t2.name
LEFT JOIN table_keys tk1 ON t1.model = tk1.model
LEFT JOIN table_keys tk2 ON t2.model2 = tk2.model

【讨论】:

  • 感谢它的工作,只是一件小事,即使一个(或两个)型号不存在,我也想看到一行。那么model_number1或2中就没有值了
  • @Oliver 使用 left join 而不是内部(“常规”)连接应该可以解决问题。请参阅我编辑的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2015-02-22
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2022-06-19
  • 2021-05-02
相关资源
最近更新 更多