->select and groupby

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

->select and groupby

Сообщение an.viktory@gmail.com »

Насколько я понимаю select выбирает именно первый Id . Можно ли как то из уникальных делать выборку по параметрам заданным мною.
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: ->select and groupby

Сообщение caHek2x »

немного не понятно в чем вопрос .. ->select это метод, грубо говоря, для определения какие поля из базы доставать ну или данные из ф-ций типа count(*) ну или length(text) ...
он никак не влияет на количество записей и на то какие записи доставать ... первые или последние ...
или я не так понял ваш вопрос
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: ->select and groupby

Сообщение ElisDN »

Можно, если первоначальную сортировку или фильтрацию сделать подзапросом:

Код: Выделить всё

SELECT s.* FROM (SELECT * FROM table ORDER BY field DESC) s GROUP BY ... ORDER BY ...
А для простых вариантов - агрегирующие функции.
Последний раз редактировалось ElisDN 2017.11.12, 23:25, всего редактировалось 1 раз.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: ->select and groupby

Сообщение an.viktory@gmail.com »

допустим есть поля

Код: Выделить всё

id, address, id_address,price
хочу вывести строки с уникальным id_address но минимальное ценой

Код: Выделить всё

$sales = Model::find()
->where(???)
как мне прописать методами ActievRecord?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: ->select and groupby

Сообщение ElisDN »

Код: Выделить всё

$sales = Model::find()
    ->from(Model::find()->alias('s')->...)
    ->groupBy(...)
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: ->select and groupby

Сообщение caHek2x »

an.viktory@gmail.com писал(а): 2017.11.12, 22:07 допустим есть поля

Код: Выделить всё

id, address, id_address,price
хочу вывести строки с уникальным id_address но минимальное ценой

Код: Выделить всё

$sales = Model::find()
->where(???)
как мне прописать методами ActievRecord?
ElisDN писал(а): 2017.11.12, 22:45

Код: Выделить всё

$sales = Model::find()
    ->from(Model::find()->alias('s')->...)
    ->groupBy(...)

можно обойтись groupBy а в select добавить min(price) as min_price
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: ->select and groupby

Сообщение an.viktory@gmail.com »

спасибо
Ответить