Sql 如何使用内部联接语句从多个表中选择数据?
我有三张桌子 产品表:Sql 如何使用内部联接语句从多个表中选择数据?,sql,sql-server-2008,Sql,Sql Server 2008,我有三张桌子 产品表: 身份证件 一般可调 零售业 来源表 身份证件 名称 零售业 及 产品库存表 产品ID 源ID 股票 用户将在我的存储过程中同时传递@RetailerID和@ProductID 如何为特定零售商选择所有来源,并将来自产品库存表的库存值附加到特定产品id的产品库存表中存在的来源,以及如何为该产品选择GeneralStockEnabled的值。即使我的产品没有库存,我仍然希望能够检索该零售商的所有资源 感谢您的帮助 我现在有一个SQL: SELECT S.ID AS
身份证件
一般可调
零售业
来源表
身份证件
名称
零售业
及
产品库存表
产品ID
源ID
股票
用户将在我的存储过程中同时传递@RetailerID和@ProductID
如何为特定零售商选择所有来源,并将来自产品库存表的库存值附加到特定产品id的产品库存表中存在的来源,以及如何为该产品选择GeneralStockEnabled的值。即使我的产品没有库存,我仍然希望能够检索该零售商的所有资源
感谢您的帮助
我现在有一个SQL:
SELECT S.ID AS SourceID,S.Name AS SourceName,PIN.Stock
FROM Sources S
LEFT OUTER JOIN ProductInventory PIN
ON (S.ID = PIN.SourceID)
WHERE S.RetailerID = 1
AND PIN.ProductID = 1
但是由于我的产品库存表现在没有记录。在这种情况下,不是选择作为源的左侧部分 您可以对相同的对象使用联接
试试这样的方法:
select s.*, pr.Stock, p.GeneralStockEnabled
from sources s join
Products p on s.RetailerId = p.RetailerId left outer join
ProductInventory pr on pr.ProductId = p.Id
where s.RetailerId = @RetailerId and p.id = @ProductId
阅读
JOIN
,尤其是LEFT JOIN
,它允许您在其他表中不存在相关行的情况下获取行。发布一些SQL,然后我们可以帮助解决任何特定问题。您可以加入三个表,对吗?产品表ID->ProductInventory表ID和产品表RetailerID->Sources表RetailerID..@iZ88使用内部联接或左联接?检查@PrfctByDsgn的答案。