Как создать запрос к базе? 2.X

 
Посетитель
small user social cms
Медаль
Сообщений: 433
Привет всем. Надо получить 10 самых высокооплачиваемых блогеров.
В базе есть таблица лог билинга, как с помощью инстантовских запросов получить желаемое.
В документации ни слова нет о том как и что просить в базе. Все что удавалось узнать это случайно из видеотуториалов или ковыряясь в коде. Как работают агрегатные функции вообще нигде не попадалось...
Помогите кто в теме!
Посетитель
small user social cms
Медаль
Сообщений: 230
В админке же показывает кто самый богатый.
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 435
Рачей, технически:

1. Запрашиваем пользователя с самым большим балансом?
2. Считываем его "имя"

3. Выводим
Посетитель
small user social cms
Медаль
Сообщений: 653
Рачей:
Как работают агрегатные функции вообще нигде не попадалось...
Они работают так же, как и должны согласно документации MySQL) Отдельная документация для них и не нужна.

@Milyana:
В админке же показывает кто самый богатый.
@IRIPUS:
1. Запрашиваем пользователя с самым большим балансом?
Вы путаете "богатый" и "высокооплачиваемый". Богатый - это у кого баланс высокий. А высокооплачиваемый - у кого оборот самый большой, или средний чек большой.

Рачей, в модели есть метод select(), в котором вы можете указать что вам нужно вытащить из базы. Например select('SUM('sum')', 'oborot')
В крайнем случае если прям совсем сложно будет разобраться - можете хоть на голом sql запрос написать и запустить через $model->db->query($sql);
Редактировалось: 3 раз (Последний: 21 декабря 2018 в 11:37)
Посетитель
small user social cms
Медаль
Сообщений: 433
@SmartControl:

Рачей, в модели есть метод select(), в котором вы можете указать что вам нужно вытащить из базы. Например select('SUM('sum')', 'oborot')
В крайнем случае если прям совсем сложно будет разобраться - можете хоть на голом sql запрос написать и запустить через $model->db->query($sql);

Спасибо. Я не то искал... Я думал у них уже написаны агрегатные запросы при помощи каких то своих замутов типа
->filterLt() или
selectOnly(
....
Посетитель
small user social cms
Медаль
Сообщений: 433
Я сегодня туплю с утра.
Как мне сделать сортировку по профиту?
Код PHP:
  1.  
  2. $model->selectOnly('user_id, SUM(amount) AS profit, summ, nickname')
  3. ->filterGt('type', '0')
  4. ->filterIsNull('summ')
  5. ->groupBy('user_id')
  6. ->limit('10')
  7. ;
  8. $model->joinLeft('{users}', 'u', 'u.id = i.user_id');
  9.  
Капец какой-то.....
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3602
Код PHP:
  1. ->orderBy('profit')
Посетитель
small user social cms
Медаль
Сообщений: 433
Loadырь:

Код PHP:
  1. ->orderBy('profit')

Пробовал я и так, и порядковым номером столбца
Код PHP:
  1.  
  2. Ошибка в запросе БД:
  3. Неизвестный столбец 'i.profit' в 'order clause'
  4.  
  5. SELECT user_id, SUM(amount) AS profit, nickname
  6. FROM cms_billing_log i
  7. LEFT JOIN cms_users as u ON u.id = i.user_id
  8. WHERE (i.type > '0') AND (i.summ IS NULL)
  9. GROUP BY i.user_id
  10. ORDER BY i.profit desc
  11. LIMIT 10
  12. Последние вызовы:
  13.  
Посетитель
small user social cms
Медаль
Сообщений: 653
Рачей, меняйте поле $model->order_by напрямую

$model->order_by = 'profit desc';

Модель автоматом подставляет "i." если вызывать метод orderBy
Посетитель
small user social cms
Медаль
Сообщений: 433
@SmartControl:

Рачей, меняйте поле $model->order_by напрямую

$model->order_by = 'profit desc';

Модель автоматом подставляет "i." если вызывать метод orderBy
Cпасибо!! Сработало. smile
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.