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的答案。