我正在尝试选择连续3个或更多 DUE 的 book_no 行,但到目前为止,我还无法做到。
This is the table:
| book_no | name | mobile | date1 | date2 | date3 | date4 | date5 |
|---------|------|--------|-------|-------|-------|-------|-------|
| 1 | Cell | | PAID | DUE | DUE | | |
| 2 | Cell | | PAID | PAID | PAID | | |
| 3 | Cell | | DUE | DUE | DUE | DUE | |
| 4 | Cell | | PAID | PAID | PAID | | |
| 5 | Cell | | DUE | DUE | DUE | | |
因此查询应返回book_no的 3,5
的行请帮助
答案 0 :(得分:0)
只需检查每个可能性或'DUE'在3列中,而不是最短的查询,但它有效,example
SELECT book_no FROM books WHERE
(date1 = 'DUE' AND date2 = 'DUE' AND date3 = 'DUE') OR
(date2 = 'DUE' AND date3 = 'DUE' AND date4 = 'DUE') OR
(date3 = 'DUE' AND date4 = 'DUE' AND date5 = 'DUE') OR
(date1 = 'DUE' AND date3 = 'DUE' AND date4 = 'DUE') OR
(date1 = 'DUE' AND date4 = 'DUE' AND date5 = 'DUE') OR
(date2 = 'DUE' AND date4 = 'DUE' AND date5 = 'DUE') OR
(date1 = 'DUE' AND date2 = 'DUE' AND date4 = 'DUE') OR
(date1 = 'DUE' AND date2 = 'DUE' AND date5 = 'DUE') OR
(date2 = 'DUE' AND date3 = 'DUE' AND date5 = 'DUE') OR
(date1 = 'DUE' AND date3 = 'DUE' AND date5 = 'DUE');
答案 1 :(得分:0)
这就是我所做的并且有效!
//get number of rows in the table
$sql2="SELECT book_no FROM asaa ORDER BY book_no";
if ($result2=mysqli_query($conn,$sql2))
{
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result2);
printf("Result set has %d rows.\n",$rowcount);
// Free result set
mysqli_free_result($result2);
}
$i=1;
while($i<=$rowcount)
{
$bookNo=$i;
$dueCount= 0;
$sql = "SELECT * FROM" .$tempTable. "WHERE book_no = " .$bookNo ;
$result = mysqli_query($conn,$sql);
if(!$result)
{
echo "Error fetching data from tempTable: " . mysqli_error($conn);
}
else
{
while ($row = $result->fetch_assoc())
{
foreach($row as $key => $var)
{
if($var=='DUE')
{
$dueCount++;
if($dueCount>2)
{
//print users and dues with duecount>2
echo "bookno $i has $dueCount dues"."<br>";
}
}
}
}
$i++;
}
}