我正在尝试根据指定日期的星期几动态选择表的列。我看到过有关动态选择列的帖子,但没有成功。
我的表在一周中的每一天都有一列,在此列中可以是NULL值或数字(计数),以及我要查询的其他一些列。
+------+------+------+------+------+------+------+
| Mon | Tue | Wed | Thur | Fri | Sat | Sun |
+------+------+------+------+------+------+------+
| NULL | NULL | NULL | 1867 | NULL | NULL | NULL |
+------+------+------+------+------+------+------+
我在Linq中传递的是特定日期(2019年1月17日上午12:00)。基于该日期的星期几(在这种情况下为星期四),我需要查看[Thu]列中是否有一个值,或者它是否为空以及其他一些WHERE条件。最终寻找满足这些条件的行数,并且在“星期几”的特定日期有一个值。在SQL中,我使用了case语句,但是它很丑陋,并且无法很好地转换为Linq。
以下是我的查询,其中没有我需要的WHERE子句。对于此示例,我希望查询返回的值为1.如果日期为2019年1月18日上午12:00,则期望其返回0。
int numOfRecords = biMarketEntities.DistRuleNews
.Where(x => DMCodeDate.CompanyCode.Contains(x.CompanyCode) &&
DMCodeDate.DMCode == x.DMCode &&
DMCodeDate.Date.Date >= x.StartDate && DMCodeDate.Date.Date <= x.EndDate)
.Count();
编辑:所附的是我要转换为Linq的SQL查询。我当前的Linq语句在WHERE子句中缺少冗长的CASE语句,这是我想简洁地添加到Linq查询中的附加条件。
SELECT COUNT(*)
FROM [BIMarket].[dbo].[DISTRULENEW]
WHERE [DISTRULENEW].[companycode] IN ('LVT')
AND [DISTRULENEW].[dmcode] IN ('LVTTMC')
AND '1/17/2019 12:00:00 AM' BETWEEN [DISTRULENEW].[startdate]
AND [DISTRULENEW].[enddate]
AND CASE Datename([DW], '1/17/2019 12:00:00 AM')
WHEN 'Monday'
THEN CASE
WHEN [DISTRULENEW].[mon] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[mon]
END
WHEN 'Tuesday'
THEN CASE
WHEN [DISTRULENEW].[tue] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[tue]
END
WHEN 'Wednesday'
THEN CASE
WHEN [DISTRULENEW].[wed] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[wed]
END
WHEN 'Thursday'
THEN CASE
WHEN [DISTRULENEW].[thu] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[thu]
END
WHEN 'Friday'
THEN CASE
WHEN [DISTRULENEW].[fri] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[fri]
END
WHEN 'Saturday'
THEN CASE
WHEN [DISTRULENEW].[sat] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[sat]
END
WHEN 'Sunday'
THEN CASE
WHEN [DISTRULENEW].[sun] = [DISTRULENEW].[geoid]
THEN [DISTRULENEW].[zip]
ELSE [DISTRULENEW].[sun]
END
END IS NOT NULL
答案 0 :(得分:0)
您没有提供太多细节,但是猜测您想要这样的东西(在您的代码中,您正在检查NULL -我不太清楚它是如何工作的,但是您可以看到如何根据星期几。
<?php
while ($row = $result->fetch_assoc()) {
unset($idex, $ExName);
$idex= $row['idex'];
$ExName = $row['ExName'];
echo '<option value="'.$idex.'">'.$ExName.'</option>';
}
?>
<div id="sub">
<input type="submit" name="Submit1" value="Submit" >
</div>
</select>
<?php
if(isset($_POST['Submit1'])){
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO students (Ex1)
VALUES ('$ExName')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>