Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果其中一个表在';他要加入吗?_Sql_Postgresql_Join - Fatal编程技术网

Sql 如果其中一个表在';他要加入吗?

Sql 如果其中一个表在';他要加入吗?,sql,postgresql,join,Sql,Postgresql,Join,假设我要将Shoes表连接到cloth表,它们都有一个名为ShoesID的列,因此对我来说,将ShoesID上的这两个表连接起来是有意义的(它也恰好是Shoes表的主键)。但这是我的问题,它不是costs表的主键,因此在costs表中的ShoesID列中,一些行会重复,这会破坏我的连接 有没有办法绕过这个问题 Clothes Table ClothesID ShoesID NakedVarchar 99 |1 | e| 100 |1

假设我要将
Shoes
表连接到
cloth
表,它们都有一个名为
ShoesID
的列,因此对我来说,将
ShoesID
上的这两个表连接起来是有意义的(它也恰好是
Shoes
表的主键)。但这是我的问题,它不是
costs
表的主键,因此在
costs
表中的
ShoesID
列中,一些行会重复,这会破坏我的连接

有没有办法绕过这个问题

Clothes Table ClothesID ShoesID NakedVarchar 99 |1 | e| 100 |1 | f| 101 |4 | g| 102 |4 | d| I want to join this to this: Shoes Table ShoesID Descriptionvarchar |1 | a| |2 | b| |3 | c| |4 | d| 衣桌 Closesid ShoesID NakedVarchar 99 | 1 | e| 100华氏度| 101 | 4 | g| 102 | 4 | d| 我想把这个和这个结合起来: 鞋桌 ShoesID描述VARCHAR |1 | a| |2 | b| |3 | c| |4 | d| 所以我认为这样做的逻辑方法是

LEFT JOIN cloth ON Shoes.ShoesID=衣服。ShoesID

不幸的是,因为衣服桌上有重复的衣服,Postgres似乎把它们删掉了, 我想把所有的数据都连接起来,包括重复的数据,我怎样才能解决这个问题呢

这并不像反转我的join语句那么简单,因为从技术上讲,我正试图将它们加入到一个大系统中
具有许多其他联接的查询。

您可以创建任何想要的联接,甚至是“自联接”,但如果关键字之间没有重合或匹配,则您的查询可能为空。如果您想列出所有这些,您应该使用联合而不是联接。

除了
ShoesID
,您使用什么标准来确定衣服表的哪一行要与鞋表的给定行关联?不确定Postgre是否支持它(我希望它支持)但在SQL Server中,您可以加入一个子查询来消除重复项。好吧,Postgres确实消除了重复项,这部分是我的问题,我希望正确地联接表并将重复项包含在联接中,并且从外观上看,我必须使用ShoesID作为标准。@user519753为什么会出现这个问题?如果在
Cloth
表中有多个条目具有相同的
ShoeID
join应该返回重复的行。如果需要返回单行,可以引入其他条件。也许应该包括一些示例数据、SQL、看到的结果和期望的结果。