MySql запрос не работает с предложением max

Интересно, почему этот запрос не работает? Это оператор построителя запросов:

$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having('MAX(date)')
->get()

Что вызывает эту ошибку:

SQLSTATE[HY000]: General error: 1 near "?": syntax error (SQL: select "code", "name", "date" from "rival_rates" group by "name", "code" having "MAX(date)"  ) (Illuminate\Database\QueryException)

Я не знаю, где находится знак вопроса, там нет никаких параметров.

Если я запускаю запрос sql через командную строку mysql, он работает:

mysql> select code, name, date from rival_rates group by name, code having MAX(date);
+------+------+------------+
| code | name | date       |
+------+------+------------+
| 100  | tal  | 2014-10-01 |
| 100  | tal2 | 2014-10-05 |
| 200  | tal2 | 2014-10-03 |
+------+------+------------+
3 rows in set (0.00 sec)

mysql>

Если я удаляю «имеющую» часть, это работает. Что не так с этим ?

Заранее спасибо.

0

Решение

Тебе нужно havingRaw:

$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->havingRaw('MAX(date)')
->get()
2

Другие решения

У вас есть проблема в синтаксисе.

$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having('MAX(date)')
->get()

Здесь для предложения требуется 3 аргумента: ->having('MAX(date)', '>=', '2014-09-25')

Примечание. Первый аргумент относится к имени столбца, второй — к оператору сравнения, а третий — к значению сравнения.

0

$condition = 'MAX(date)';

$this->getBuilder()
->select('code', 'name', 'date')
->groupBy('name', 'code')
->having($condition)
->get()

Это тоже будет работать. Если вы не хотите указывать параметр в предложении.

0
По вопросам рекламы [email protected]