Я пытаюсь найти максимальное значение, содержащееся в двух отдельных полях моей таблицы.Найти максимальное числовое значение двух полей varchar
код, я использую в моей модели:
$query = $this->db->query("select max($field1) as max_id_1 from default_table1");
$row1 = $query->row_array();
$query = $this->db->query("select max($field2) as max_id_2 from default_table1");
$row2 = $query->row_array();
return max($row1['max_id_1'], $row2['max_id_2']);
Я полный новичок, где PHP и CodeIgniter обеспокоен - как я уверен, что мой код демонстрирует :)
It работает, поскольку он возвращает значения, но не максимальные значения, которые я имею в полях. Например, я знаю, что есть значение 4000, но самое высокое значение - 750.
Мне интересно, если это потому, что поля имеют тип VARCHAR, потому что, хотя они содержат преимущественно числа, есть некоторые, которые содержат символы (- или &) или слово 'to', поэтому я не мог использовать тип INT. Из-за использования VARCHAR он не видит, что 4000 больше 750?
Если это так, чтобы указать содержимое поля как целое, прежде чем проверять максимальное значение, и на это будут влиять нецелые значения в полях?
Все благодарности за помощь и помощь были получены с благодарностью.
Tony.
Спасибо за это @milan. Он работает - конечно, лучше, чем код, который я придумал, но, похоже, он не достигает максимального значения, если сравнение находится между числом и нулевым значением (например, $ field1 = 4000, $ field2 = NULL). Будет ли это ожидаться? Любые идеи, как преодолеть это? В очередной раз благодарим за помощь. – tcarnell
Несомненно, используйте COALESCE. Вместо field1 и field2 используйте COALESCE (поле1,0) и COALESCE (поле2,0) –
Superb @milan. Это великолепно работало :) Большое спасибо за вашу помощь, очень ценю. – tcarnell