1

私は3つのテーブルを持っています、

表1

Fruit_Crate_ID (varchar)
Fruit_Crate_Name (varchar)
Fruit_Crate_Size (varchar)
Fruit_Crate_Price (varchar)

表 2

Fruit_Crate_ID (varchar)
Fruit_Eatable (Bool)

表 3

Fruit_Crate_ID (integer)
Fruit_ID (integer)
Fruit_Eatable (Bool)

ここで、最初にチェックするストアド プロシージャを作成する必要があります。

表2がFruit_Crate_IDに対してチェックすることによって食べられるかどうか、それがfalseの場合は、 Fruit_Crate_IDFruit_IDが食べられるかどうかとして表3をチェックします。

USE [Database Name]
GO
CREATE PROCEDURE [dbo].[IsFruitEatable] 
    @Fruit_Crate_ID int,
    @Fruit_ID int
AS
BEGIN

if ((select Fruit_Eatable from Table2
where  Table1.Fruit_Crate_ID = @Fruit_Crate_ID))
{
   select Fruit_Eatable from Table3
   where  Table3.Fruit_Crate_ID = @Fruit_Crate_ID and Table3.Fruit_ID = @Fruit_ID
}

アップデート

最初に表 2 を確認する必要があります。果物が食べられないことが示されている場合は、果物 ID に関係なく false を返す必要があります。

しかし、表 2 にフルーツ クレートが食べられると記載されている場合は、フルーツ自体が食べられるかどうかを確認する必要があります。

ありがとう

4

2 に答える 2

4

クエリに 2 つのエラーが含まれています:

  1. あなたの場合は無効です。クエリによって何かが返されるかどうかを確認するには、exists
  2. if使用する句を入力するにはbegin .. end

これは正しいものです:

if exists (select Fruit_Eatable from Table2 where  Table2.Fruit_Crate_ID = @Fruit_Crate_ID)
begin
   select Fruit_Eatable from Table3
   where  Table3.Fruit_Crate_ID = @Fruit_Crate_ID and Table3.Fruit_ID = @Fruit_ID
end

編集されたクエリ

USE [Database Name]
GO
CREATE PROCEDURE [dbo].[IsFruitEatable] 
    @Fruit_Crate_ID int,
    @Fruit_ID int
AS
BEGIN

  declare @isEatable bit = null

  if exists (select Fruit_Eatable from Table2 t2 where  t2.Fruit_Crate_ID = @Fruit_Crate_ID and t2.Fruit_Eatable = 1)
  begin
     select @isEatable = Fruit_Eatable
     from Table3 t3
     where  t3.Fruit_Crate_ID = @Fruit_Crate_ID and t3.Fruit_ID = @Fruit_ID
  end

  select isnull(@isEatable, 0) as IsFruitEatable
于 2013-07-04T10:16:22.060 に答える
1

1つのアプローチは次のとおりです。

USE [Database Name]
GO
CREATE PROCEDURE [dbo].[IsFruitEatable] 
    @Fruit_Crate_ID int,
    @Fruit_ID int
AS
BEGIN 
declare @Return bit = 0
select @Return = Fruit_Eatable 
  from Table3
 where Table3.Fruit_Crate_ID = @Fruit_Crate_ID 
   and Table3.Fruit_ID = @Fruit_ID 
   and EXISTS (select *
                 from Table2
                where Table1.Fruit_Crate_ID = @Fruit_Crate_ID)

select @Return
END
于 2013-07-04T10:22:15.800 に答える