Mysql 如何加入这些查询?

Mysql 如何加入这些查询?,mysql,join,outer-join,Mysql,Join,Outer Join,问题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

问题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'
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, forum WHERE category.id = forum.catID AND forum.approved = 'yes' AND forum.site_code = 'las' GROUP BY category.id
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, 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上保持连接,而Query3在id=catID上保持外部连接。

query1:

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'
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, forum WHERE category.id = forum.catID AND forum.approved = 'yes' AND forum.site_code = 'las' GROUP BY category.id
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, 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'
我不确定你在这件事上要求什么,但试了一下:

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的结果。我对我想做的事情有一个功能性的理解,但我不能正确理解语法。