Задача такая есть таблица MySQL:
Нужно выбрать 3 блока записей в рамках одного "callid". Не три записи, а подряд все записи у которых диапазон значения "callid" не будет превышать 3-х
Такой вариант пугает:
PHP:
скопировать код в буфер обмена
$all_selected_uid = array(); foreach ($data as $row) { $all_selected_uid[] = $row['callid']; } // Сравниваем количество полученых записей в рамках одного уникального "callid" и если нехватает добавляем недостающие // Получаем реальное количество записей записаных в "cdr" в рамках одного "callid" $count_uid = mysql_query("SELECT COUNT(*) FROM cdr WHERE callid = '".$uid."'"); // Перебираем все результаты запроса исправниваем количество записей в "cdr" и в результате первой выборки данных // Фильтруем массив первой выборки так чтобы там остались только записи с определенным "callid" $rows_in_first_quiry = array_filter($data, function ($row) use ($uid) { return ($row['callid'] == $uid); }); // Сраыниваем количество записей в первой выборке (count($qw)) и количество записей в "cdr" ($count[0]) в рамках одного "callid" if (count($rows_in_first_quiry) != $count[0]) { // Если не хватате добираем все записии и дописываем в многомерный массив с результатаом первой выборки $count_uid = mysql_query("SELECT * FROM cdr WHERE callid = '".$uid."'"); $data[] = $row; } // Отсекаем те элементы массива которые задублировались } } }
Тоже самое без комментариев:
PHP:
скопировать код в буфер обмена
$all_selected_uid = array(); foreach ($data as $row) { $all_selected_uid[] = $row['callid']; } $count_uid = mysql_query("SELECT COUNT(*) FROM cdr WHERE callid = '".$uid."'"); $rows_in_first_quiry = array_filter($data, function ($row) use ($uid) { return ($row['callid'] == $uid); }); if (count($rows_in_first_quiry) != $count[0 ]) { $count_uid = mysql_query("SELECT * FROM cdr WHERE callid = '".$uid."'"); $data[] = $row; } } } }
(Отредактировано автором: 25 Июля, 2016 - 11:20:13)
|