mysqli- php选择包含> 3个连续相同值的字段的行

时间:2016-07-21 15:30:58

标签: mysql

我正在尝试选择连续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

的行

请帮助

2 个答案:

答案 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++;
            }
        }
相关问题