【发布时间】:2016-04-27 07:16:54
【问题描述】:
这是表album,它的结构和数据是,
这是另一个表photos,它的结构和数据是,
我想列出所有相册名称、相应相册的总照片、按 JOIN 和 GROUP BY 上传的最后一张图片。
这是我现在使用的 Codeigniter 查询。一切正常,除了它获取image 列值的第一行而不是最新行。
$query = $this->db->select('albums.name, photos.image, albums.created, albums.id,
COUNT(photos.id) as total')
->from('photos')
->join('albums', 'albums.id = photos.album_id')
->order_by('photos.id', 'desc')
->group_by('photos.album_id')
->limit($limit, $offset)
->get();
上面生成的 SQL 查询是,
SELECT `albums`.`name`, `photos`.`image`, `albums`.`created`, `albums`.`id`, COUNT(photos.id) as total FROM `photos` JOIN `albums` ON `albums`.`id` = `photos`.`album_id` GROUP BY `photos`.`album_id` ORDER BY `photos`.`id` DESC LIMIT 10
对于这两个查询,结果都是,
[{"名称":"电影 Stills","image":"assets/images/albums/2016/01/84786b91857b45fa9391943e9a468ac6.jpg","created":"2016-01-19 23:41:53","id":"3","total":"3"},{"name":"Firstlook","image":"assets/images/albums/2016/01/6e90cdfdec444dfc53f4a7c30a2ac31e。 jpg","创建":"2016-01-19 23:16:05","id":"1","total":"2"}]
如果您查看图像键,它会显示第一个而不是最后一行的值。
我对这两种查询解决方案(Codeigniter/SQL)都持开放态度。
【问题讨论】:
-
从相册表中加入照片表
-
@K1N6 有整数类型的列。在这里,它的字母数字。所以,MAX 不起作用。
标签: php mysql sql codeigniter