【问题标题】:How do I join these queries?如何加入这些查询?
【发布时间】:2010-04-08 16:36:53
【问题描述】:

查询1:

SELECT category.id, category.name, category.level, category.description, category.cat1, category.cat2, category.cat3, category.cat4, category.pri_color, category.sec_color, category.last_report AS report_id FROM category, reports_category_layout WHERE category.id = reports_category_layout.catID AND reports_category_layout.site_code = 'las'

查询2:

SELECT DISTINCT category.id, COUNT(forum.id) AS posts, SUM(forum.view) AS views FROM category, forum WHERE category.id = forum.catID AND forum.approved = 'yes' AND forum.site_code = 'las' GROUP BY category.id

查询3:

SELECT forum.catID, forum.title, forum.paragraph, forum.created, users.alias, forum.userID FROM forum, users, forum_cache WHERE forum.catID = forum_cache.catID AND forum.id = forum_cache.last_report AND users.id = forum.userID AND forum.approved = 'yes'

基本上,我不确定正确加入这些的语法。我写了一个简单地连接它们的查询,但是如果论坛缓存表包含未经批准的论坛 id,它根本不会返回整行。

我真正需要的是 query1 和 query2 在类别 id 上左连接,查询 3 在 id = catID 上左外连接。

【问题讨论】:

    标签: mysql join outer-join


    【解决方案1】:

    查询1:

    SELECT category.id, category.name, category.level, category.description, category.cat1, category.cat2, category.cat3, category.cat4, category.pri_color, category.sec_color, category.last_report AS report_id 
    FROM category c
    LEFT OUTER JOIN reports_category_layout rcl on c.id = rcl.catID
        AND rcl.site_code = 'las'
    

    查询2:

    SELECT DISTINCT category.id, COUNT(forum.id) AS posts, SUM(forum.view) AS views 
    FROM category c
    LEFT OUTER JOIN forum f on c.id = f.catID 
        AND f.approved = 'yes' 
        AND f.site_code = 'las' 
    GROUP BY c.id
    

    查询3:

    不太确定您对此有何要求,但试了一下:

    SELECT forum.catID, forum.title, forum.paragraph, forum.created, users.alias, forum.userID 
    FROM forum f
    INNER JOIN users u on u.id = f.userID
    LEFT OUTER JOIN forum_cache fc on f.catID = fc.catID 
        and f.id = fc.last_report 
    WHERE f.approved = 'yes'
    

    【讨论】:

    • 也许我并不清楚:我想将 query1 和 query2 的结果左连接在一起然后将该结果与查询 3 的结果左外连接。我对它是什么有一个功能性的理解想做,但语法不正确。
    猜你喜欢
    • 1970-01-01
    • 2016-06-13
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多