1

这些天我是一个 MySQL 人,并且有一个我正在处理的 .NET 项目,但无法弄清楚如何根据表中的两个字段从表中动态生成和返回字段(列)。

Units 表中有两个字段 bRentable 和 bRented,如果 bRentable 和 bRented 等于 0,我需要返回一个名为 reserved 的字段。

这是我到目前为止的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

您可以将以下内容作为另一列添加到您的选择语句中:

(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

在您的函数或存储过程中进行此查询后,您只需检查保留字段的值。如果返回 1。

于 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 回答