Laravel Выберите счет с groupBy - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь получить количество уникальных партий в таблице gift_code для каждой кампании. Таблица gift_code присоединяется к таблице кампании с помощью campaign_id.

Here is some sample data for campaign table.

--------------+--------------
|campaign_id  | name        |
--------------+--------------
| 1           | abc         |
--------------+--------------
| 2           | xyz         |
--------------+--------------

Below is some sample data for gift_code table.

--------------+------------------------+--------------+
|gift_code_id | campaign_id | batch    | unique_code  |
--------------+-------------+----------+---------------
| 1           | 1           |    1     | zxc23        |
--------------+-------------+----------+--------------+
| 2           | 1           |    2     | rtc26        |
--------------+-------------+----------++-------------+
| 3           | 2           |    1     | z8723        |
--------------+-------------+----------+--------------+
| 4           | 2           |    2     | h7c26        |
--------------+-------------+----------++-------------+
| 5           | 2           |    2     | rrcf6        |
--------------+-------------+----------++-------------+
| 6           | 2           |    3     | r7y28        |
--------------+-------------+----------++-------------+
| 7           | 2           |    3     | bnc26        |
--------------+-------------+----------++-------------+
 $campaign = DB::table('campaign')
                    ->select('campaign.*', DB::raw('count(gift_code.batch) as batch_count')->groupBy('gift_code.campaign_id')->groupBy('gift_code.batch'))
                    ->leftjoin('gift_code', 'campaign.campaign_id', '=', 'gift_code.campaign_id')
                    ->get();

Мои ожидаемые результаты:

--------------+-------------------------+
|campaign_id  | name        |batch_count| 
--------------+-------------+-----------+
| 1           | abc         |    2      |
--------------+-------------+-----------+
| 2           | xyz         |    3      |
--------------+-------------+-----------+

1 Ответ

0 голосов
/ 07 января 2019

Попробуйте запрос ниже

$data = \DB::table('campaign as c')
       ->leftJoin('gift_code as gc','c.campaign_id','=','gc.campaign_id')
       ->select('c.*',\DB::raw('COUNT(distinct(gc.batch)) as batch_count'))
       ->groupBy('c.campaign_id')
       ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...