Сравнить значения столбцов

Назначение
 

Функция dbx_compare сравнивает значения указанных столбцов из двух строк таблицы.

Синтаксические правила
int dbx_compare (строка1, строка2, столбец[, флаг]);
Строка1

Массив значений первой сравниваемой строки таблицы.

Строка2

Массив значений второй сравниваемой строки таблицы.

Столбец

Имя сравниваемого столбца.

Флаг

Задает направление и тип сравнения.

Возможные направления:

  • DBX_CMP_ASC – в порядке возрастания;

  • DBX_CMP_DESC – в порядке убывания.

Возможные типы сравнения:

  • DBX_CMP_NATIVE – без конвертации типов;

  • DBX_CMP_TEXT – сравнивать как строки;

  • DBX_CMP_NUMBER – сравнивать численно.

Одно из направлений и одна из констант типа могут комбинироваться битовой операцией OR (|).

Если параметр flag не задан, по умолчанию используется значение

DBX_CMP_ASC | DBX_CMP_NATIVE.
Возвращаемое значение

Результат сравнения:

  1. 0, если значение строка1[столбец] равно значению строка2[столбец];

  2. 1, если значение строка1[столбец] больше значения строка2[столбец] (в случае, если значение параметра флаг равно DBX_CMP_ASC);

  3. -1, если значение строка1[столбец] меньше значения строка2[столбец] (в случае, если значение параметра флаг равно DBX_CMP_ASC).

Результат сравнения меняется на противоположный при замене значения параметра флаг на DBX_CMP_DESC.

Пример
function user_auto ($a, $b) {
    $rv = dbx_compare ($a, $b, "model", DBX_CMP_DESC);
    if ( !$rv ) {
        $rv = dbx_compare ($a, $b, "year", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect (DBX_LINTER, "", "", "SYSTEM", "MANAGER8")
    or die ("Ошибка соединения");

$result = dbx_query ($link, "SELECT year, make, model FROM auto ORDER BY make");
    // данные в $result теперь упорядочены по производителям автомобилей (make)

dbx_sort ($result, "user_auto");
    // данные в $result теперь упорядочены по марке автомобиля (model) (по убыванию), затем по году выпуска (year)

dbx_close ($link);