mysql - 加入多个表 - 评论和回复
问题描述
我尝试创建不同用户的问题和答案的查询。我的目标是将不同的表连接在一起以创建我想要的结果。目前,SQL 查询总是在评论栏中生成相同的内容,即来自提出问题的用户。因此,用户 A 的答案根本不会输出。我用LEFT/RIGHT更改了INNER JOIN,然后它会起作用,但是问题(评论)就会消失。
SELECT C.username UserQ
, R.username UserA
, C.commentID
, D.Title
, C.text Comment
FROM Comments C
JOIN Detail D
ON C.vID = D.vId
JOIN Search S
ON C.vID = S.vID
JOIN Replies R
ON C.commentID = R.CommentID_ParentID
WHERE D.categoryId = 25
AND S.searched_keyword = 'stackoverflow'
GROUP
BY UserQ
, UserA
, commentID
, Title
, Comment
Current Outcome:
UserQ UserA commentID Title Comment
Sven Katja 213 Need Help Hi, I need help
Sven Sven 214 Answer1 Hi, I need help
Sven Ben 215 Answer2 Hi, I need help
Tess NULL 216 Soccer I love soccer
Carl Tanja 216 Question Do I need SQL for jobs?
Carl Peter 216 Answer Do I need SQL for jobs?
我还尝试了使用 SQL 语句"UNION"的不同方法,但是 UserQ 和 UserA 之间有明显的区别,这意味着当另一列被填充时,其中一列始终为空。
Desired Outcome:
UserQ UserA commentID Title Comment
Sven Katja 213 Need Help Hi, I need help
Sven Sven 214 Answer1 Try to solve it like..
Sven Ben 215 Answer2 You can also try...
Tess NULL 216 Soccer I love soccer
Carl Tanja 216 Question Do I need SQL for jobs?
Carl Peter 216 Answer Yes...
解决方案
你试过这个吗?
SELECT C.username UserQ,
R.username UserA,
C.commentID,
D.Title,
C.text Comment
FROM Comments C
JOIN Detail D
ON C.vID = D.vId
JOIN Search S
ON C.vID = S.vID
LEFT OUTER JOIN Replies R
ON C.commentID = R.CommentID_ParentID
WHERE D.categoryId = 25
AND S.searched_keyword = 'stackoverflow'
ORDER
BY commentID,
replyID
实际上,您为什么不使用一些示例数据创建一个 SQLfiddle 呢?
推荐阅读
- scala - 将 Scala 对象作为 Java 对象传递给 Java 方法
- python - 正确使用 create_autospec
- java - 尝试读取二进制保存的整数时 readInt() 不起作用
- javascript - 你将如何在 Java 中创建这个嵌套的 javascript 数组的等价物
- python - 将 Python 字典转换为 JSON 数组
- d3.js - d3 文本仅在添加到组时出现。为什么?
- graphql - 如何在 graphql 查询过滤器中使用 OR / AND 或制作不区分大小写的过滤器?
- css - 在 CSS 中裁剪图像的中心
- design-patterns - 管理一个 Kafka 主题的多个消费者的消息
- cuda - CUDA - 一个轴上的平行缩减