我有两张桌子连在一起:
book_types_purchased
为ENUM('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'
答案 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'