Mysql Объединить повторяющиеся значения столбца строки в одну строку - PullRequest
0 голосов
/ 02 октября 2018

Я зациклен на построителе запросов.Я хочу объединить повторяющиеся значения столбцов в одну строку.

Например, у меня есть

id  name    age     rollnum
1   bob     24      null            
2   bob     24      1234

Я хочу увидеть 1 bob 24 1234. Как я могу сделать это в следующем запросе.Любая помощь, которая будет оценена.Заранее спасибо.

QueryBuilder

$data = \DB::table("table1 AS a")
  ->select("a.*")
  ->join(\DB::raw("(SELECT 
      id, name, age, COUNT(*),
      FROM table2
      GROUP BY b.name, b.age
      HAVING count(*) > 1
      ) as b"), function($join){
        $join->on("a.name", "=", "b.name")->on("a.age", "=", "b.age");
  })
  ->orderBy("a.name")
  ->get();

1 Ответ

0 голосов
/ 02 октября 2018

Ваш запрос присоединится к ним, но в конечном итоге он возвращает только значения из A.

Может быть, что-то подобное будет работать для вас:

\DB::table('table1 as A')
->join(\DB::raw("(SELECT 
  id, name, age, rollnum, COUNT(*),
  FROM table2
  GROUP BY B.name, B.age
  HAVING count(*) > 1
  ) as B"), function($join){
    $join->on("A.name", "=", "B.name")->on("A.age", "=", "B.age");
})
->select(
   \DB::raw('IFNULL(A.id, B.id) AS id'),
   \DB::raw('IFNULL(A.name, B.name) AS name'),
   \DB::raw('IFNULL(A.age, B.age) AS name'),
   \DB::raw('IFNULL(A.rollnum, B.rollnum) AS rollnum')
 )
 ->orderBy('name')
 ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...