我已经阅读了很多关于该主题的文章,但是我无法让它适用于我的案例。T-SQL左连接1行(limi,subselect)
我有以下情况:
- 的OrderItems(我想主要的数据集)
- 文章其中有1清单:1关系的订单项目
- A N: m可加入的“Articlesupplier”,创建物品和 合作伙伴之间的关系
- 合作伙伴表格,包含有关合作伙伴的详细信息。
目标:
每OrderItem的,并从供应商我只是想在加入找到的第一个 一个数据集。不需要优先。
表:
表IDX_ORDERITEM
id,article_id
表IDX_ARTICLE
id,name
表IDX_ARTICLESUPPLIER
article_id,partner_id
表IDX_PARTNER
id,abbr
我的实际语句(短版):
SELECT IDX_ORDERITEM.id
FROM
dbo.IDX_ORDERITEM AS IDX_ORDERITEM
-- ARTICLE --
INNER JOIN dbo.IDX_ARTICLE AS IDX_ARTICLE
ON IDX_ORDERITEM.article_id=IDX_ARTICLE.id
-- SUPPLIER VIA ARTICLE --
LEFT JOIN
(SELECT TOP(1) IDX_PARTNER.id, IDX_PARTNER.abbr
FROM IDX_PARTNER, IDX_ARTICLESUPPLIER
WHERE IDX_PARTNER.id = IDX_ARTICLESUPPLIER.partner_id
AND IDX_ARTICLESUPPLIER.article_id=IDX_ARTICLE.id) AS IDX_PARTNER_SUPPLIER
ON IDX_PARTNER_SUPPLIER.id=IDX_ARTICLE.supplier_partner_id
WHERE 1>0
ORDER BY orderitem.id DESC
但似乎我不能访问IDX_ARTICLE.id子查询。我收到以下错误消息:
无法绑定多部分标识符“IDX_ARTICLE.id”。
问题是文章别名与表名具有相同的名称吗?
非常感谢提前对可能的想法, 迈克
这是一个非常不幸的是,糟糕的命名约定打电话给你的表'IDX _......' - 这将直观地指一个** **指标 - 不是表! –
你是对的,但不幸的是,这不是我的数据库,ERP系统的名称是“IDX”,这就是这种命名约定的原因。 – Michael