Laravel Selection Query с левым соединением - PullRequest
0 голосов
/ 27 августа 2018

Таблица - tbl_user_details

UserId  | Username
------------------
1       |  jijo
2       |  libin

Таблица - tbl_user_followups

FollowupId  |  UserId  |  Status
---------------------------------
1           |  1       |  Negative
2           |  1       |  Neutral
3           |  1       |  Positive

Мой контроллер -

$result= DB::table('tbl_user_details')
                        ->leftjoin('tbl_user_followups','tbl_user_details.UserId','=','tbl_user_followups.UserId')
                        ->select('tbl_user_details.*','tbl_user_followups.*')

                        ->orderBy('tbl_user_followups.FollowupId','DESC')
                        ->groupBy('tbl_user_details.UserId')
                        ->get();

Я хочу получить вывод какниже

UserId  | Username | FollowupId  |  Status
----------------------------------------
1       |  jijo    |    3        |  Positive
2       |  libin

Кто-нибудь может, пожалуйста, предложить редактирование в моем контроллере ???

1 Ответ

0 голосов
/ 27 августа 2018

Не уверен, правильно ли я понял вопрос: Вы хотите список пользователей с последним «продолжением»?Если это так, то:

SELECT d.userid,
       d.username,
       det.followupid,
       det.status
FROM   tbl_user_details d
       LEFT JOIN (SELECT userid,
                         followupid,
                         status
                  FROM   tbl_user_followups f
                  WHERE  followupid IN (SELECT Max(followupid)
                                        FROM   tbl_user_followups
                                        GROUP  BY userid)) det
              ON d.userid = det.userid
ORDER  BY det.followupid DESC;


 order by det.followupid desc;

Обратите внимание, что «order by det.followupid» не будет правильно сортировать их, так как мы ожидаем, что у некоторых пользователей будет «нулевое» повторение.

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