【问题标题】:Query two joins on the same value and table在相同的值和表上查询两个连接
【发布时间】:2017-06-09 10:43:04
【问题描述】:

我在执行以下查询时遇到问题。这个想法是我有两个表商店和用户。在商店中,我有列 store_owners 和 store_last_modified,这两个值都是与 dbo.Users 的 id 相关的整数。如何显示存储在与两列相关的用户中的名称。像这样:

select stores.name , users.name as name_store_owner , users.name as name_store_last_modified

from stores

LEFT JOIN users ON stores.store_owners=users.id (related to name_store_owner)
LEFT JOIN users ON stores.store_last_modified=users.id  (related to name_store_last_modified)

我该怎么做?

提前谢谢你。

【问题讨论】:

  • 您 JOIN 存储表,但连接条件中有 users 列...?

标签: sql sql-server join left-join


【解决方案1】:

您需要为表指定别名,以便在from 子句中引用同一个表两次。另外需要参考右表(users不是stores):

select s.name, uo.name as name_store_owner, um.name as name_store_last_modified
from stores s left join
     users uo 
     on s.store_owners = uo.id left join
     users um
     on s.store_last_modified = um.id 

【讨论】:

  • 我会试试的,谢谢。是的,这是一个错误,抱歉我刚刚编辑了帖子。
【解决方案2】:

看来不用两次引用表格就可以检查条件。

select * from
stores s
left join
users u on u.id = s.store_owners
and u.id = s.store_last_modified

从您的问题看来,用户 id (id) 应该与 stores 表中单行的两列相匹配。

【讨论】:

  • 如果店主不是最后修改的用户怎么办?
  • @destination-data 这个问题在我看来好像 OP 需要一个结果,其中商店所有者本身就是最后修改的用户。我使用“出现”这个词是安全的,因为这两列都属于另一个表中的一个列。
  • 好点,没有样本数据很难回答这些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2020-07-15
  • 2016-07-22
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
相关资源
最近更新 更多