【问题标题】:php/mysql join syntaxphp/mysql 连接语法
【发布时间】:2012-04-19 20:31:34
【问题描述】:

我有在一个表中加入了一个组的人的用户 ID,但在另一个表中没有他们的名字。所以我想我需要加入。我从描述组的 groupid 开始。

表 1,groupmem 有成员的 groupid 和 userid。

表2,用户有userid和username

users 表包含每个用户。 groupmem 中只有部分加入了群组的人。

SQL 语句应该类似于以下内容,但无法使其正常工作。

select users.name
FROM users,groupmem
LEFT JOIN users
on groupmem.userid=users.userid
WHERE groupmem.groupid = 22

22 being some value..

认为 where 子句可能在错误的位置,或者我使用了错误的连接类型,但或者没有正确使用 on,但无论如何,它都无法正常工作。感谢您的任何建议:

【问题讨论】:

  • 你确定表名和列名正确吗?当你执行查询时会发生什么?
  • 你到底想找回什么......群组中所有人的名字?

标签: php mysql join


【解决方案1】:

试试:

SELECT u.username
FROM `users` u
LEFT JOIN `groupmem` g
ON u.userid = g.userid
WHERE g.groupid = 22

【讨论】:

  • 这个没有抛出错误信息,根据numrows返回一行。但是,我无法从该行访问字段用户名。您能否推荐一个查看结果的好方法。
  • 假设每个返回行的变量是$row,您可以简单地使用$row['username'](还假设数据库中的字段名称称为“用户名”)。
  • 使用了 print_r 和数据作为名称。我错误地调用了 $row['users.name']。工作中。谢谢!
【解决方案2】:

这应该可以解决问题:

SELECT users.name
FROM groupmem
LEFT JOIN users ON groupmem.userid = users.userid
WHERE groupmem.groupid = 22

您的查询似乎很正确 - 假设我猜对了您的表结构。

【讨论】:

  • 用户名在表中,我应该用 users 代替 groupmem 吗?
猜你喜欢
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 2011-01-08
相关资源
最近更新 更多