There is for example a table:

id | col_1 | col_2 1 | a | c 2 | d | b 3 | v | n 4 | b | h 5 | b | a ... и т.д. 

We need to make this conclusion:

 <div> 1, 5 </div> <!-- все id где в col-1 OR в col-2 есть "a" --> <div> 5, 12 </div> <!-- все id где в col-1 есть "а" AND в col-2 есть "b" OR в col-1 есть "b" AND в col-2 есть "a" --> <div> 2, 4, 5 </div> <!-- все id где в col-1 OR в col-2 есть "b" --> 

This is how I do it:

 $div1_q = mysqli_query("SELECT id FROM table WHERE col_1='a' OR col_2='a'"); $div2_q = mysqli_query("SELECT id FROM table WHERE col_1='a' AND col_2='b' OR col_1='b' AND col_2='a'"); $div3_q = mysqli_query("SELECT id FROM table WHERE col_1='b' OR col_2='b'"); $div1 =''; $div2 =''; $div3 =''; while($div1_r = mysqli_fetch_assoc($div1_q)) { $div1 .= $div1_r['id']; } while($div2_r = mysqli_fetch_assoc($div2_q)) { $div2 .= $div2_r['id']; } while($div3_r = mysqli_fetch_assoc($div3_q)) { $div3 .= $div3_r['id']; } 

Who is not difficult, please tell me if there is a better solution? Sample request and a little php =)

    1 answer 1

    Use union:

     $query = mysqli_query($conn, "(SELECT id, 1 FROM test WHERE col_1='a' OR col_2='a') UNION ALL (SELECT id, 2 FROM test WHERE col_1='a' AND col_2='b' OR col_1='b' AND col_2='a') UNION ALL (SELECT id, 3 FROM test WHERE col_1='b' OR col_2='b')"); $div1 = ''; $div2 = ''; $div3 = ''; while($row = mysqli_fetch_assoc($query)) { if($row['1'] == 1) { $div1 .= $row['id']; } else if($row['1'] == 2) { $div2 .= $row['id']; } else if($row['1'] == 3) { $div3 .= $row['id']; } } 
    • Thank you, it works ... - bsbak