MySQL "join as"?

标签 mysql sql

我有两个连接在一起的表:

table_diagram

book_types_purchasedENUM('paperback','hardcover')。我想返回这种类型的行:

book_title | paperback_date_purchased | hardcover_date_purchased

Is there a way to do this in MySQL?


UPDATE

Here is the answer from below with matching table names and left joins instead:

SELECT title,
  paperback.date_purchased AS paperback_date_purchased,
  hardcover.date_purchased AS hardcover_date_purchased

FROM book_projects

LEFT JOIN book_types_purchased AS paperback 
  ON paperback.book_project_id = book_projects.id
  AND paperback.type = 'paperback'

LEFT JOIN book_types_purchased AS hardcover 
  ON hardcover.book_project_id = book_projects.id
  AND hardcover.type = 'hardcover'

最佳答案

您可以JOIN book_types_purchased 表两次。每种类型一个。

SELECT title,
  paperback.date_purchased AS paperback_date_purchased,
  hardcover.date_purchased AS hardcover_date_purchased

FROM book_projects

JOIN date_purchased AS paperback ON paperback.book_project_id = book_projects.id
  AND paperback.type = 'paperback'

JOIN date_purchased AS hardcover ON hardcover.book_project_id = book_projects.id
  AND hardcover.type = 'hardcover'

关于MySQL "join as"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440790/

相关文章:

php - 尝试将多表sql查询放入一个结果数组中

MySQL:使用 ORDER BY 和 UNION

SQL Server 2012链接服务器应用程序意图

php - 获取相关表中的 SUM。如果没有找到,则求和为 0

Mysql - 至少选择一个或不选择

PHP - 在数据库问题中编辑数据

mysql - 以下情况如何实现mysql order by

mysql - 扩展以根据数据范围选择

sql - 配置单元查询结果到新表

sql - SSIS DataFlowTask DefaultBufferSize 和 DefaultBufferMaxRows