【发布时间】:2020-02-08 20:54:33
【问题描述】:
我需要一些建议。
我在连接两个表时遇到问题。
示例:所有者有一个五段式复合密钥
位置有一个六片组合键
所有者表有
As_Of_Date(Key), PORT_CD(Key), Deal_Or_Schedule(Key), Deal_Sched_No(Key),owner_port_cd(Key),Percent
位置表有 As_Of_Date (Key),PORT_CD (Key),Deal_Or_Schedule (Key), Deal_Sched_No (Key), Book_CD_Nme (Key),Positn_Num (Key)
您可以在 Owner 中看到 4 个条件匹配加入表 2,但 Onwer_port_cd 无法加入,因为它不在 Position 中。
我需要从两张表中获取一张表,以便将收入映射到其所有者。
现在我的加入结果是笛卡尔积,因为它没有包含所有限定符。
【问题讨论】:
-
这个不是很清楚。什么在杀死你?为什么不能加入 OWNERSHIP 和 POSITION_ALLOCATION 表?
-
感谢编辑。但这仍然不清楚且难以阅读。请阅读代码和引用的编辑帮助重新内联和块格式。也重新换行。请在发帖之前查看编辑框下方帖子的格式化版本。不,我看不到。 “4 个条件匹配”是什么意思?还是“Onwer_port_cd 不在位置,无法加入”?您的帖子正文中仍然没有问题,也没有minimal reproducible example。您是否打算在这篇文章中添加一些代码? PS One 不需要知道查询的约束。表格的含义(一行所说的)是必要且充分的。
-
请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL 的 SQL,其中包括约束、索引和表格初始化。 How to Ask
-
当你得到一个你不期望的结果时,停止试图找到你的总体目标并找出你的误解是什么。--隔离第一个意外的子表达式及其输入和输出。 (调试基础。)询问一下。没有人可以接受您所写的内容并知道您的查询应该做什么或为什么您认为它会这样做。使用足够的单词、句子和对部分示例的引用。在给出业务关系(船舶)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。谷歌在 cmets 中重新@。
标签: sql sql-server select inner-join composite-primary-key