1

到目前为止我的代码: http ://sqlfiddle.com/#!2/c421c/6

我想在同一行显示所有电影

期望的输出:

|  Name| Favourite movies |
----------------------------
| Alice |          Movie A Movie B |
|   Bob |          Movie A Movie C |
| Carol |           (null) |
|  Dave |           (null) |

我正在使用 CodeIgniter 2 活动记录

PHP 输出

Array
(
    [0] => stdClass Object
        (
            [user] => Test
            [gender] => 0
            [GROUP_CONCAT(movies.movie SEPARATOR "-")] => Movie A-Movie B
        )

我应该如何像使用 [user] (echo $user->user;) 一样打印最后一个字段的输出?

4

2 回答 2

1

采用GROUP_CONCAT

GROUP_CONCAT(`movies`.`movie`) AS "Favourite movies"

您还可以更改分隔符,

GROUP_CONCAT(`movies`.`movie` SEPARATOR ' ')

于 2013-05-06T15:50:08.487 回答
1

使用group_concat

SELECT `users`.`user` AS name, 
       group_concat(`movies`.`movie`) AS favorites

FROM (`users`)

LEFT JOIN `users_movies` 
  ON `users`.`id` = `users_movies`.`user_id`

LEFT JOIN `movies` 
  ON `users_movies`.`movie_id` = `movies`.`id`

GROUP BY `users`.`user`

SQLFiddle 演示

于 2013-05-06T15:50:27.870 回答