php - MYSQL RIGHT JOIN 和 PHP
问题描述
我有三张桌子:
- 用户(主键:id_users)
- 中心(主键:id_centers)
- usersInCenters(主键:id_usersInCenters,外键:id_users 和 id_centers)
通过第三张表,我将用户与中心联系起来,因为 1 个用户可以参加不同的中心。
有了这个 SELECT 我得到了我想要的结果:
SELECT *
FROM `userInCenter`
RIGHT JOIN `user` ON `user`.`id_user` = `userInCenter`.`id_user`
";
通过这个查询,我得到:
所以,这实际上是相当不错的,并且几乎达到了我想要的。
唯一的是,如果一个用户有两个中心,我的查询会创建两行。
但是,我想要的是显示一行并在同一字段中显示中心:8,7。像这样。
这可能吗?还是我必须改变一些东西?
小提琴: http ://sqlfiddle.com/#!9/0fed10/2
PHP:
<?php
while ($row=mysqli_fetch_object($listaDeUsuarios)){
$id_usuario=$row->id_usuario;
$nombreUsuario=$row->nombreUsuario;
$apellidoUsuario=$row->apellidoUsuario;
$emailUsuario=$row->emailUsuario;
$ciudadUsuario=$row->ciudadUsuario;
$createdAt=$row->createdAt;
$id_centroDeportivo=$row->id_centroDeportivo;
?>
在此先感谢亚历杭德罗。
解决方案
<?php
$con = mysqli_connect("localhost", "root", "", "gymtable_test");
//Retrieving the contents of the table
$res = mysqli_query($con, "SELECT ucd.id_usuarioCentroDeportivo, ucd.id_usuario, GROUP_CONCAT(ucd.id_centroDeportivo SEPARATOR ',') AS id_centroDeportivo, ucd.rolUsuarioCentro, ucd.createdAt, u.*
FROM usuarioCentroDeportivo ucd
RIGHT JOIN usuario u ON u.id_usuario = ucd.id_usuario
GROUP BY ucd.id_usuario");
//Fetching all the rows as objects
while ($row=mysqli_fetch_object($res)){
$id_usuario=$row->id_usuario;
$nombreUsuario=$row->nombreUsuario;
$apellidoUsuario=$row->apellidoUsuario;
$emailUsuario=$row->emailUsuario;
$ciudadUsuario=$row->ciudadUsuario;
$createdAt=$row->createdAt;
$id_centroDeportivo=$row->id_centroDeportivo;
// do something with the variables
}
//Closing the statement
mysqli_free_result($res);
//Closing the connection
mysqli_close($con);
GROUP BY 将具有相同用户 ID (ucd.id_usuario) 的行组合在一起,然后 GROUP_CONCAT 显示每个用户 ID 的所有中心,用逗号分隔。
推荐阅读
- jsp - 表单中的错误 404 通信 servlet/JSP
- prolog - 为什么不打印整个列表?
- javascript - 从包含重复项的数组中获取唯一的 ObjectID
- python - 如何从列表中将键和值添加到字典
- ios - 输入文本时 UIButton 自动换行不起作用?
- sql-server - 存储过程临时表跨越不同的用户和生命周期
- sql-server - SQL Server:如何在 WHERE 子句中使用 IF ELSE 或其他内容
- android - 从 SQLite DB 获取数据不返回字符串
- java - 无法找到对自己的关系的 Maven 依赖项
- java - Spring继承,多对多,实体映射中的重复列