【问题标题】:SQL statements from several tables来自多个表的 SQL 语句
【发布时间】:2018-09-19 18:22:28
【问题描述】:

给定以下两个表:

Users table 
id (pk) 
name
avatar 

Comments table 
id (pk) 
id_pic (fk)
id_user (fk)
text 
date

如何创建一个 SQL 语句来返回 id=7 的 Pics 的所有信息?

重要提示:我想要来自评论(id、文本、日期)和撰写评论的用户(id、姓名、头像)的信息

谢谢!

编辑: 我试过了,但它返回了 1 行,而它必须是 2:

SELECT c.id, c.id_user, u.avatar, u.name, c.date, c.text 
FROM Comments c 
INNER JOIN Users u 
ON u.id=c.id_user AND c.id_pic=7;

编辑 2: 部分数据:

Users
id   name   avatar
1    joe    true
2    lee    false

Comments
id   id_pic   id_user  text         date
1    7        2        cool         2018-09-09
2    7        1        great        2018-09-10
3    10       1        ugly         2018-09-10

编辑 3: 当我这样做时它工作正常:

SELECT c.id, c.id_user, c.date, c.text 
FROM Comments c 
INNER JOIN Users u
ON u.id=c.id_user AND c.id_pic=7;

但它没有在行中显示我需要的信息(u.avatar 和 u.name):(

【问题讨论】:

  • 也给我们展示一些示例数据.....
  • 您的查询对我来说运行良好并返回 2 行:sqlfiddle.com/#!9/b5ede5/1
  • 您的查询是正确的,它应该返回 2 条记录。再试一次!
  • 你使用 select *.我不想用那个
  • @Ommadawn,您发布的查询是您正在运行的完整语句还是您有更多?按原样发布的查询将返回正确的数据。

标签: mysql sql join


【解决方案1】:

这个查询对我有用。如果要获取头像和名称,则必须将其包含在 SELECT 语句中。

SELECT c.id, c.id_user, c.date, c.text, u.avatar, u.name 
FROM dbo.comments c
INNER JOIN dbo.users u ON u.id = c.id_user
WHERE c.id_pic = 7

希望这就是你要找的东西

【讨论】:

  • 这个查询和他发布的没有什么不同。它们都将返回相同的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多