【问题标题】:How to use Joins sql server如何使用 Joins sql server
【发布时间】:2014-06-12 19:01:18
【问题描述】:

我需要连接两个表

tbl_1

sno     productName     productQuantity     id 

tbl_2

sno     productName     remainingQuantity   id 

我的存储过程代码是

@id
as
begin
select a.sno,a.productName, a.productQuantity,b.remainingQuantity
from tbl_1 a join tbl_2 b
on a.id=b.id where a.id=@id
end

其显示结果如tbl_1 * tbl_2(cross-join) 行数

例如

如果 tbl_1 和 tbl_2 有 2 行,则显示 4 行

我需要 2 行

我在哪里出错了?谢谢

【问题讨论】:

  • 您的问题在这里:where id=@id。 SQL 不知道在哪个表中查找@id 变量,因为它同时存在于tbl_1tbl_2 中。您还需要在那里为 id 起别名。
  • 我试过但显示相同的结果
  • 两个表的id列是什么关系?
  • 两个表的 id 值相同
  • 在这种情况下, distinct 会得到你想要的结果。看看@valentine petkov 提供的答案。

标签: sql sql-server join


【解决方案1】:

我认为您只是没有正确声明存储过程。将您的代码替换为:

CREATE PROCEDURE [dbo].[STORED_PROCEDURE_NAME]  
   @id int
AS
BEGIN

    select 
          a.sno,
          a.productName, 
          a.productQuantity,
          b.remainingQuantity
    from tbl_1 a 
    inner join tbl_2 b
    on a.id=b.id 
    where a.id=@id  

END

然后你可以执行你的存储过程:

 EXEC [dbo].[STORED_PROCEDURE_NAME] @id = 123

要修改存储过程使用:

ALTER PROCEDURE 而不是CREATE PROCEDURE

【讨论】:

  • 见我上面的评论 Add DISTINCT
猜你喜欢
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多