繁体   English   中英

如何在一个“循环”中获取属于用户的所有图像

[英]How to get all images which belongs to user in one “loop”

我有两个名为users和images的mysql表。 每个用户最多可以有5张图片。 在页面中,我显示用户信息和所有图像。 当我这样查询

SELECT
  SQL_CALC_FOUND_ROWS,
  u.username,
  u.gender,
  u.etc
  .........
  i.picture
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
 some_condition

结果是重复每个图像的用户信息。 例如

  • userX age19 pic 1
  • userX age19 pic 2
  • userX age19 pic 3
  • 等等..

怎么做的结果是用户信息与属于他的所有图像?

例如:

用户名
年龄
性别
pic1,pic2,pic3
等等

我建议你运行两个查询,一个用于用户,第二个用于每个用户图片。 试图在一个查询中获取它并以您想要的方式构造它是复杂的。

$rowset = array(); // your fetched data

$user = $rowset[0];
unset($user['picture']);
$user['pictures'] = array();

foreach ( $rowset as $row ) {
  $user['pictures'][] = $row['picture'];
}

你可以使用mysql的group_concat。

SELECT SQL_CALC_FOUND_ROWS,
  u.username,
  u.gender,
  u.etc,
  ...
  GROUP_CONCAT(i.picture SEPARATOR ",") AS pictures
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
  some_condition
GROUP BY u.id

我现在还没有测试过,但我认为我的记忆并没有失败。 您将在“图片”列中以逗号分隔所有图片。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM