MYSQL получить COUNT наивысшего значения столбца для разных фаз - PullRequest
0 голосов
/ 11 июля 2020

Это довольно сложная база данных. Поэтому я упростил структуру для облегчения понимания.

У меня есть 2 таблицы ТАБЛИЦА A: транзакции

p_id     rev_count
1        1
2        1
3        1
1        1
1        1
1        2 (Gets incremented as it has reached max entries)
2        1
2        1
2        2 (Gets incremented as it has reached max entries)
1        2
2        2

ТАБЛИЦА B: rev_countReference

p_id     rev_count
1        2
2        2
3        1

Итак, в основном таблица B сохраняет значение rev_count как ссылку для ТАБЛИЦЫ A. Поскольку p_id может принимать только 3 транзакции, всякий раз, когда p_id превышает 3 count, значение rev_count увеличивается, и следующая запись p_id будет иметь увеличенное значение rev_count.

ВОПРОС Я хочу получить количество транзакций, занятых в максимальном rev_count каждым p_id.

Желаемый результат:

p_id      used_rev
1         1
2         2
3         1

Пробовали до сих пор:

К сожалению, я ' m пока не может написать код для приведенного выше примера БД. Но то, что я пробовал до сих пор с реальным кодом.


public function getfreeslots($user_id) {
        
        $this->db->select('count(t.id), t.reinvest_count, MAX(t.reinvest_count) AS max_reinvest, COUNT(t.id) AS outstandingSlots'); 
        $this->db->from('transactions t'); 
        $this->db->join('reinvestCount rc', "t.receiver_id=rc.user_id AND t.phase_id=rc.phase_id",'LEFT'); 
        $this->db->where('t.receiver_id', $user_id);
        
        $this->db->having('t.reinvest_count >= max_reinvest');
        $this->db->group_by('t.phase_id');
        $this->db->order_by('t.phase_id', 'ASC');
        
        $query = $this->db->get(); 
        $row = $query->result();
        
        if (empty($row))
            return FALSE;
        return $row;
        
    }
    
    

Я использую построитель запросов Codeigniter. Поэтому ответ с помощью построителя запросов будет очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...