【问题标题】:SQL JOIN fail - not a unique table/aliasSQL JOIN 失败 - 不是唯一的表/别名
【发布时间】:2014-07-18 07:27:36
【问题描述】:
SELECT `member_name.smf_members`, COUNT(`author.smf_links`) 
FROM smf_members, smf_links
JOIN smf_links ON id_member.smf_members = author.smf_links;
GROUP BY `author.smf_links`

它说 smf_links 不是唯一的表/别名。我要做的就是让它计算有多少行有相同的作者,并显示成员姓名而不是作者(这是一个数字)和计数。

所以,而不是: 1 | 23

它会显示: 兔子 | 23

我无法弄清楚这一点,我的大脑已经因谷歌搜索而麻木。有人可以帮我吗? :)

【问题讨论】:

  • member_name.smf_members 参数可能会显示兔子,不是吗?也许 member_id 或其他东西会解决你的问题
  • 你真的需要加入smf_links 两次吗?您对同一个表既有隐式连接也有显式连接。
  • 我只想显示名称,而不是 ID。 id是我想加入的。巴尔玛,你是什么意思?
  • 你有FROM smf_members, smf_links JOIN smf_links。第一个是隐式连接,第二个是显式连接。

标签: mysql sql smf-forum


【解决方案1】:

您遇到的错误是因为您加入同一个表smf_links 两次。如果那是您真正想要做的,您需要给它们起别名以便区分它们。但我怀疑你做错了。

另外,语法是tablename.column,而不是column.table。而且您必须分别在每个部分周围放置反引号;如果. 在反引号内,则将其视为文字字符,而不是分隔符。

SELECT `smf_members`.`member_name`, COUNT(*)
FROM smf_members
JOIN smf_links ON smf_members.id_member = smf_links.author
GROUP BY smf_links.author

【讨论】:

  • 知道了,谢谢!不完全确定它是如何计算链接表行数的。你介意解释一下吗? :)
  • JOIN 创建一个叉积,COUNT(*) 计算该叉积中的行数。您不需要在 COUNT() 中输入列名,除非您不需要计算该列为 NULL 的行。
  • 哦,好的,非常感谢!我承认我有点生疏了。仍然把事情想得太死板/字面意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多