【问题标题】:how to combine these two queries into one如何将这两个查询合二为一
【发布时间】:2011-12-11 08:03:50
【问题描述】:

我有三个表:postscat_collectioncat_mapping
posts 包含您的字段期望在名为 posts 的表中看到 id、类型、标题、正文、作者、电子邮件、日期等。

cat_collection 包含id、名称、描述

cat_mapping 包含 *id、collection_id、post_id*

我目前有两个查询,第一个从 posts 中选择信息,第二个从 cat_collectioncat_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

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

【问题讨论】:

    标签: mysql


    【解决方案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 令人困惑 - 该表是关于猫的集合,而不是猫。

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      相关资源
      最近更新 更多