sql - 加入3个表不正确的结果
问题描述
我有 3 个带有 common key 的表organization_id
。
根据交易编号,我可以从表 1 中找到特定交易,例如价值reason_code=B5
,所以..
在表 #1 中transaction
,有一列reason_code = 'B5'
。
在表 #2 中reason_code
,有一列reason_code = 'B5' and description = 'XYZ'
在表 #3 中,translation
有一列translation_key = 'XYZ'
(与表 #2 中的列的值相同description
)和列Translation
。
我对TRANSLATION
表#3 中列的值感兴趣,该值通过表#2 与表#1 相关。
我有以下查询:
SELECT
description, c.trans_seq
FROM
Translation a
INNER JOIN
com_reason_code b ON a.organization_id = b.organization_id
INNER JOIN
transaction c ON a.organization_id = c.organization_id
WHERE
c.trans_seq = '500'
我得到了超过 1000 个结果,c.trans_seq = 500
但是如果我运行这个查询
SELECT *
FROM transaction
WHERE trans_seq = '500'
我只得到一排。老实说,我不知道我做错了什么。
解决方案
在没有实际看到表结构和数据的情况下,我会根据您的描述尽可能地填写空白,并且每个表只有 1 条记录,因为我不知道您在表数据中的变化。
create table transactions (organization_id int, reason_code nvarchar(2), trans_seq int)
create table reasoncode (organization_id int, reason_code nvarchar(20), descriptions nvarchar(100))
create table translations (organization_id int, translation nvarchar(100), translation_key nvarchar(100))
insert transactions
select 1, 'B5', 500
insert reasoncode
select 1, 'B5', 'Big Bad Boy 5'
insert translations
select 1, 'Little Red 2', 'Big Bad Boy 5'
select a.trans_seq, c.translation
from transactions a
inner join reasoncode b on a.organization_id = b.organization_id and a.reason_code = b.reason_code
inner join translations c on b.organization_id = c.organization_id and b.descriptions = c.translation_key
where a.trans_seq = 500
drop table transactions
drop table reasoncode
drop table translations
这将为您提供结果,但是您可能/将需要根据表的结构和数据进行修改。
推荐阅读
- c++ - Q文件。设备未打开
- ios - 手动隐藏搜索栏控制器
- python - 未在 tkinter python 上分配全局变量
- python - 使用 heroku repo 减少 slug 大小,但不断收到“此时无法运行一次性进程。请稍后再试。” 信息
- javascript - 如何使用方法保存和加载对象?
- javascript - WordPress - 尝试在注册表单中添加“上传图片”部分
- git - Gitignore 不会忽略文件
- anaconda - 没有使用 Spyder 的名为“dolfin”的模块
- android - 使用具有一对多关系的 ContentProvider
- javascript - JS 脚本在 HTML 中的位置