MySQL“加入”?

时间:2013-03-15 19:38:51

标签: mysql sql

我有两张桌子连在一起:

table_diagram

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

book_title | paperback_date_purchased | hardcover_date_purchased

有没有办法在MySQL中执行此操作?


更新

以下是匹配表名和左连接的答案:

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'

1 个答案:

答案 0 :(得分:4)

您可以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'