Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » SQL Запрос c DISTINCT » 19.06.2017 15:21:45

ps
vladislavTkachenko пишет:

$names = YourTable::select('name')->latest()->distinct()->paginate(10);

нет это не то, я уже написал свой запрос, там оказалось на много проще и без distinct().

#2 Re: Laravel 5.x » SQL Запрос c DISTINCT » 18.06.2017 21:20:24

ps
constb пишет:

а! only full group by – это вообще-то правильно, большинство СУБД требуют этого, только mysql допускает вольности. можно вернуть strict mode и заменить name в select на max(name) smile

делал max(name) и пишет что такого столбика нет в бд big_smile

#3 Re: Laravel 5.x » SQL Запрос c DISTINCT » 18.06.2017 16:51:32

ps

кажется частично разобрался, ошибку выбивало из-за мода mysql, в конфигах прописал 'modes'  => [], и все норм

#4 Re: Laravel 5.x » SQL Запрос c DISTINCT » 18.06.2017 14:24:04

ps
constb пишет:

Это я и сам видел, но там мало описания, и просто так вставив оно не работает как надо.

так может сам по себе этот запрос работает не так как надо? я вот смотрю на описание задачи, на запрос и в упор не понимаю зачем там вообще нужен distinct? group by уже сам по себе гарантирует что все одинаковые имена «соберутся» в одну единственную запись и будут уникальны

потому что ошибку выбивает груп бай

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'social.facebook_m.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select * from `facebook_m` where `user` = 4 group by `chat` order by `time` desc limit 10 offset 0)

#5 Re: Laravel 5.x » SQL Запрос c DISTINCT » 18.06.2017 13:29:46

ps

Это я и сам видел, но там мало описания, и просто так вставив оно не работает как надо.
И так как я мало знаю ларавель, я обратился за помощью...

#6 Laravel 5.x » SQL Запрос c DISTINCT » 17.06.2017 23:55:40

ps
Ответов: 11

Добрый день. Суть вопроса:

Есть таблица, к примеру (id, name, time). Нужно написать запрос на ларе таким образом, что бы выводились только уникальные имена,
отсортировать по time DESC и paginate->(10)

Что то примерное придумал на чистом SQL, не знаю правильно ли, но не могу его на ларавеле написать:

Скорее всего не правильный, но все таки, как такой запрос написать на ларавеле:
SELECT DISTINCT max(time), name FROM `table` GROUP BY name ORDER BY time DESC
Или подскажите, более правильный запрос для моей задачи.

p.s.: последняя версия ларавеля, если вдруг это важно

Подвал раздела