Каким образом нужно построить функцию MAX, чтобы искать максимальное значение из определенных столбцов в бд? Допустим в базе есть следующие столбцы: id, data, srok1, srok2 Код (Text): select MAX (srok1) FROM DB WHERE data='03.01.2013' AND id='1' эта штука безусловно работает! Код (Text): select MAX (srok1, srok2) FROM DB WHERE data='03.01.2013' AND id='1' а эта нет!!! как правильно построить запрос?
можно. Код (Text): SELECT MAX(GREATEST(`field1`, `field2`)) `grtstmx` FROM `table` сначала мы для каждой пары полей агрегируем поле с максимальным значением пары. мускул налету назначит неудобное имя этому агрегированнуму полю - GREATEST(`field1`, `field2`). но мы тут же ищем максимальное значение по этому, агрегированному для всех записей, полю. мускул назначит результирующему агрегированному полю имя MAX(GREATEST(`field1`, `field2`)), но мы тут же попросим присвоить этому полю имя-псевдоним grtstmx и все станет красиво. запрос вернет одну строку содержащую самое большое значение по двум полям таблицы. что и требовалось найти.
можно, проверяйте наличие нулевого типа данных и подставляйте нулевое числовое значение. Добавлено спустя 2 минуты 5 секунд: это если у вас есть случаи когда оба значения с нулевым типом. если нет (одно из значений всегда ненулевое) тогда можно использовать COALESCE()
к примеру запрос выглядит так: Код (Text): SELECT MAX(GREATEST(`field1`, `field2`, `field3`, `field4`, `field5`)) `grtstmx` FROM `table` как правильно использовать COALESCE() ??
а в мануал глянуть религия не позволяет? есть инструмент который выполняет какую-то функцию. цепочка инструментов выполняет задачу. сформулируйте алгоритм и переложите его а инструменты. если не получилось - публикуйте тут код который не работает и своими словами логику его работы. посмотрим, поможем. а сейчас вы просто требуете за вас решить вашу задачу.