zwei Spalten, in denen die Klausel mit dem Komma zusammengeführt wird

8

Ich möchte eine Abfrage erstellen.

Hier ist Tabelle:

id  user_id  sn_no
1   22       00112233
2   22       987654325
3   22       65489732
4   25       984123123
5   25       9568456456
6   25       65456456

Ich möchte ein Ergebnis wie dieses:

{
   "user_id":22,
   "sn_no": "00112233,987654325,65489732"
}
{
   "user_id":25,
   "sn_no": "984123123,9568456456,65456456"
}

Kann jemand bitte helfen, dieses Problem zu lösen?

Ich habe versucht: concat,GROUP_CONCAT kann aber nicht das Ergebnis erhalten.

Können Sie mir bitte helfen, dies in der Join-Abfrage hinzuzufügen?

$users = \DB::table('users')
            ->join('users_mcu', 'users.id', '=', 'users_mcu.user_id')
            ->join('country_user', 'users.id', '=', 'country_user.user_id')
            ->join('country_phase_color', 'country_user.country_id', '=', 'country_phase_color.id')
            ->select('users.id', 'users.first_name', 'users.last_name', 'users.company', 'users.designation', 'users.lang', 'users.phone', 'users.disp_graph', 'users.user_image', 'users.email', 'users.role', 'users.created_at', 'users.updated_at', 'country_user.country_id', 'country_phase_color.country_name')
            ->get();
vdr
quelle
DB :: raw ("(GROUP_CONCAT (sn_no SEPARATOR ',')), wie sn_noSie Group Concat wie dieses verwendet haben
Pankaj Bisht
Standard SEPARATOR ist ','es nicht nötig, es erneut zu definieren
Dilip Hirapara
Bitte teilen Sie uns mit, wo Sie GROUP_CONCAT
Sehdev

Antworten:

4

Versuche dies-

YourModel::select('user_id')
         ->selectRaw('GROUP_CONCAT(sn_no) as sn')
         ->groupBy('user_id')
         ->get();
Rashed Hasan
quelle
Bitte überprüfen Sie die aktualisierte Antwort. Eigentlich kenne ich den Spaltennamen sn_noin welcher Tabelle nicht ... bitte bestätigen Sie übersn_no
Rashed Hasan
sn_no wird in der Tabelle user_mcu gespeichert
vdr
Bitte überprüfen Sie das Update
Rashed Hasan
IT sagt -------users.id 'ist nicht in GROUP BY
vdr
gleicher Fehler: users_mcu.user_id
vdr
1

Versuche dies.

$data = \DB::table('tablename')->select('user_id', \DB::raw('group_concat(sn_no) as sn_nos'))->groupBy('user_id')->get();

Als ob Sie etwas ändern möchten, SEPARATORkönnen Sie es verwenden SEPARATOR, andernfalls ist die Standardeinstellung','

\DB::table('tablename')->select('user_id',DB::raw("(GROUP_CONCAT(sn_no SEPARATOR '@')) as `sn_nos`"))->groupBy('user_id')->get();
Dilip Hirapara
quelle
0

Versuche dies

use DB;

DB::table('tableName')
        ->select('id','user_id','DB::raw("(GROUP_CONCAT(sn_no SEPARATOR ',')) as `sn_nos`")')
        ->groupBy('user_id')
        ->get();
Vikas Katariya
quelle
-1

Sie können dies versuchen

Model::select('user_id')
       ->selectRaw('GROUP_CONCAT(sn_nos) as sn_nos')
       ->groupBy('user_id')
       ->get();
bhavinjr
quelle