2016-11-15 4 views
0

мне нужно присоединиться пользовательскую таблицу со всеми изображениями пользователей в одном ряду, как этотОбъединение двух таблиц в одну таблицу

table user 
+----+---------------+ 
|id | name  | 
+----+---------------+ 
| 1 | Mike   | 
| 2 | Jerry   | 
| .. | .....   | 
+----+---------------+ 

table image 
+------+---------+---------+ 
| id | user_id | img | 
+------+---------+---------+ 
| 1 | 1  | img_1 | 
| 2 | 1  | img_2 | 
| 3 | 1  | img_3 | 
| 4 | 2  | img_4 | 
| .. | .... | ..... | 
+------+---------+---------+ 

мне нужно для получения результатов SQL, как этот

+------+--------+----------+----------+----------+ 
| id | name | img1 | img2 | img3 | 
+------+--------+----------+----------+----------+ 
| 1 | Mike | img_1 | img_2 | img_3 | 
+------+--------+----------+----------+----------+ 
| ... | .... | .... | .... | .... | 
+------+--------+----------+----------+----------+ 

ответ

2

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

Простое решение для вашей задачи может использовать GROUP_CONCAT(), который будет производить как результирующий

+------+--------+----------+----------+----------+ 
| id | name | images      | 
+------+--------+----------+----------+----------+ 
| 1 | Mike | img_1;img_2;img_3    | 
+------+--------+----------+----------+----------+ 
| ... | .... |        | 
+------+--------+----------+----------+----------+ 

Если это достаточно хорошо, вы можете добиться того, что с

SELECT a.id, a.name, GROUP_CONCAT(b.img) images 
FROM user a 
    INNER JOIN image b ON a.id = b.user_id 
GROUP BY b.user_id; 
Смежные вопросы