当前位置: 首页 > 知识库问答 >
问题:

MySQL如何通过一个查询从不同的表中获得两个结果

龙逸清
2023-03-14

我有以下表格:

表名称 -----| 表字段

图书--------------------图书id、图书名称

作者 ---------- | author_id、author_name

图书作者-作者id,图书id

用户------------------用户id、用户名

注释----------注释id,注释

评论|用户|评论| id、用户id、图书id、日期

我需要显示书名,它的作者,以及为这本书发布的所有评论(我需要显示用户名,日期,评论)。我用两个不同的sql查询来做,但是我不知道如何用一个查询来做。以下是两个查询:

SELECT * FROM books
INNER JOIN books_authors
ON books.book_id=books_authors.book_id
INNER JOIN authors
ON books_authors.author_id=authors.author_id
WHERE books.book_id=7

这个函数返回id=7的书的名称和作者。

SELECT `user_name`, `comment`, `date`
FROM comments_users
INNER JOIN comments ON comments_users.comment_id = comments.comment_id
INNER JOIN users ON comments_users.user_id = users.user_id
WHERE comments_users.book_id=7

这将返回用户名、注释和注释发布日期。有谁能解释一下,我如何将它们合并到一个查询中?提前谢谢

共有2个答案

刘承运
2023-03-14

您不能将两个查询中的所有表合并起来吗?

SELECT `books.book_id`, `books.book_title`, `comments_users.user_name`,
`comments_users.comment`, `comments_users.date` 
FROM books
INNER JOIN books_authors ON books.book_id=books_authors.book_id
INNER JOIN authors ON books_authors.author_id=authors.author_id
INNER JOIN comments_users ON comments_users.book_id = books.book_id
INNER JOIN comments ON comments_users.comment_id = comments.comment_id
INNER JOIN users ON comments_users.user_id = users.user_id
WHERE books.book_id=7

希望这就是你想要实现的。

艾和通
2023-03-14

这个安排的查询应该足够了,它将显示您想要的结果:

SELECT books.book_title, authors.author_name, comments.comment FROM books
INNER JOIN books_authors
ON books.book_id=books_authors.book_id
INNER JOIN authors
ON books_authors.author_id=authors.author_id
LEFT JOIN comments_users ON comments_users.book_id = books.book_id
INNER JOIN comments ON comments_users.comment_id = comments.comment_id
INNER JOIN users ON comments_users.user_id = users.user_id
WHERE books.book_id=7
 类似资料:
  • 问题内容: 这应该是程序员经常遇到的问题,但是我从来没有尝试过用这种方式来解决问题。 也就是说,我会解释。说,我需要像这样从表Zoo获取值: 现在,我可以将所有值都添加到列表中。我需要在网格中显示该查询的详细信息。现在已经有了z.predator和z.prey值(它们是时间上的整数,即它们各自的ID),我需要填充其有意义的值以将其显示给最终用户(我不能仅仅显示其ID)。所以现在我可能会做这样的事情

  • 我想得到结果匹配的所有节点包含属性abc值为xyz或pqr。 我在以下方面进行尝试: > http://localhost:4502/bin/querybuilder.json?path=/content/campaigns/asd http://localhost:4502/bin/querybuilder.json?path=/content/campaigns/asd http://loca

  • 问题内容: 我想知道如何编写此查询。 我知道这个实际的语法是虚假的,但是它将帮助您理解我想要的。我需要这种格式,因为它是更大查询的一部分。 我需要所有这些都在一个查询中返回。 此外,它必须排成一排,因此以下内容将不起作用: 问题答案: 您可以将语句与聚合函数一起使用。这与某些RDBMS中的函数基本相同:

  • 我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...

  • 问题内容: 我有两张表。我试图将下面的两个示例表与表1结合起来,两次引用表2。例如,如果我查看表1:第2组和成员7,则应在表2中查找ID,并提供以下输出: 表1 表2 有什么建议吗?谢谢 问题答案: SELECT Table_1.*, g.Name, m.Name FROM Table_1 INNER JOIN Table_2 AS g ON Table_1.Group=g.ID INNER JO

  • 问题内容: 我的问题很简单。我想在Elastica的一个查询中组合两个过滤器,一个filter_bool和一个filter_range。该代码是 我不能在$ elasticaQuery中将两个过滤器放在一起。请给我任何帮助! 谢谢! 问题答案: 为什么不将范围过滤器添加为过滤器中的另一个术语: 您需要在布尔过滤器中使用过滤器,而不是查询。注意我已经使用而不是您正在使用的范围查询。 另外,您知道您使