如何将这两个查询合并为一个

时间:2011-10-19 21:53:44

标签: mysql

我有三个表:帖子 cat_collection cat_mapping
帖子包含您希望在名为帖子的表格中看到的字段 ID,类型,标题,正文,作者,电子邮件,日期等。

cat_collection 包含 ID,名称,说明

cat_mapping 包含* id,collection_id,post_id *

我目前有两个查询,第一个查询来自帖子的信息,第二个查询从 cat_collection cat_mapping <检索相关类别/ p>

第一

SELECT post.id, post.type, post.title, post.body, post.date, post.author, post.email
FROM posts AS post
WHERE post.id = 1

第二

SELECT cat.name
FROM cat_collection AS cat
LEFT JOIN cat_mapping AS map ON map.collection_id = cat.id
WHERE map.post_id = 1

有没有办法通过一个查询返回所有帖子信息以及相关类别列表?

1 个答案:

答案 0 :(得分:1)

如果我了解您的数据模型,您只需要另一个左连接。您可能希望重新排序连接以确保查询有效并返回正确的数据。

SELECT
  posts.id,
  posts.type,
  posts.title,
  posts.body,
  posts.date,
  posts.author,
  posts.email,
  cat.name
FROM
  posts
LEFT JOIN 
    cat_mapping AS map ON map.post_id = posts.id
LEFT JOIN 
    cat_collection AS collection ON map.collection_id = collection.id
WHERE
  posts.id = 1

请仔细考虑您的别名。将“帖子”别名化为“帖子”是愚蠢的。将“cat_collection”别名化为cat令人困惑 - 该表是关于猫的集合,而不是猫。