mysql - SQL多对多查询返回false

标签 mysql sql relational-database

我正在尝试弄清楚如何进行多对多 sql 查询,但遇到了一个问题。

我的数据库结构是:

projects_users_roles: project_id, user_id, role_id
user_roles: id, name
projects: id, name, user_id

所以在我的查询中,我想选择 user_id=23 的所有项目以及他们在 projects_users_roles 中为该项目分配的角色名称

我以为我有它,但它返回 FALSE

$query = "
SELECT p.name AS project_name
, r.name AS role_name
FROM projects AS p
JOIN projects_users_roles AS a
   ON a.project_id = p.id
JOIN users_roles AS role
   ON role.id = a.role_id WHERE a.user_id = 23
";
$result = mysql_query($query);
var_dump($result);

最佳答案

难道别名 r 从未定义过?您的代码示例在 SELECT 中显示 r.name 而不是 role.name

$query = "
SELECT p.name AS project_name
, role.name AS role_name
FROM projects AS p
JOIN projects_users_roles AS a
   ON a.project_id = p.id
JOIN users_roles AS role
   ON role.id = a.role_id WHERE a.user_id = 23
";
$result = mysql_query($query);
var_dump($result);

关于mysql - SQL多对多查询返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568961/

相关文章:

查询用户数据时,Java ResultSet 已关闭异常

javascript - AlaSQL 从 CSV 插入表不起作用

mysql - 如何将查询结果放入 SQL 函数的返回变量中

python - pymysql 错误 : 'str' object has no attribute 'nextset'

mysql - 通过查询将相似的信息组合成一个组

java - 通过 JDBC 使用 MySQL 登录表单 : Model driven in Struts 2

mysql - 统计SQL中每个父元素下每个子元素的评分

sql - 您什么时候选择将 XML 存储在关系数据库中?

mysql - 如何根据每个可预订实体每天都有不同时间表的时间段构建和查询约会系统?

php - MySQL 表结构未在 Doctrine ORM 实体中更新