1

私は最近MySQLの男で、.NETプロジェクトに取り組んでおり、テーブルの2つのフィールドに基づいて、テーブルからフィールド(列)を動的に生成して返す方法がわかりません。

Units テーブルには bRentable と bRented の 2 つのフィールドがあり、bRentable と bRented がゼロの場合は、予約済みというフィールドを返す必要があります。

ここに私がこれまでに持っているSQLがあります

/* Units Query */
SELECT Units.UnitID, Units.dcWidth, Units.dcLength, Units.dcPushRate, 
       Units.dcStdRate, Units.UnitTypeID, UnitTypes.sTypeName, Units.bRentable     
FROM Units
INNER JOIN UnitTypes ON Units.UnitTypeID = UnitTypes.UnitTypeID

どんな助けでも大歓迎です。

4

3 に答える 3

1

次のものを別の列として select ステートメントに追加できます。

(cast case 
when (bRentable = 0 and bRented = 0) then 1 
else 0 
end as bit) as reserved

編集:OPのコメントに基づいて更新:

SELECT Units.UnitID, Units.dcWidth, Units.dcLength, Units.dcPushRate, 
       Units.dcStdRate, Units.UnitTypeID, UnitTypes.sTypeName, Units.bRentable,(cast case 
    when (bRentable = 0 and bRented = 0) then 1 
    else 0 
    end as bit) as reserved   
FROM Units
INNER JOIN UnitTypes ON Units.UnitTypeID = UnitTypes.UnitTypeID
于 2012-09-07T05:47:03.743 に答える
1
SELECT Units.UnitID, Units.dcWidth, Units.dcLength, Units.dcPushRate, 
       Units.dcStdRate, Units.UnitTypeID, UnitTypes.sTypeName, Units.bRentable,
       CASE When (Units.bRentable = 0 and Units.bRented = 0) then 1 else 0 end as reserved
FROM Units
INNER JOIN UnitTypes ON Units.UnitTypeID = UnitTypes.UnitTypeID

関数または sproc でこのクエリを実行した後、フィールド reserved.If の値を確認するだけです。

于 2012-09-07T06:15:47.150 に答える
0

ストアド プロシージャまたはユーザー定義関数が必要な場合は、次のクエリが役立ちます。

DECLARE @Rentable BIT
DECLARE @Rented BIT
DECLARE @Reserved BIT

SELECT @Rentable = U.bRentable, @Rented = U.bRented
    FROM UNITS U INNER JOIN UnitTypes UT ON U.UnitTypeId = UT.UnitTypeId

IF(@Rentable = 0 AND @Rented = 0)
 BEGIN
    SET @Reserved = 0
 END
ELSE
 BEGIN
    SET @Reserved = 1
 END

RETURN @Reserved // OR SELECT @Reserved

ADO.NET を検索し、パラメーターを指定して SqlCommand を使用すると、クエリでコマンドを組み立てた後に SqlParameters を渡すことができます。

SqlCommand.Parameters.Add();
于 2012-09-07T05:39:59.583 に答える