mysql - 我如何加入这些查询?

标签 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 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 上左联接,而 query 3 在 id = catID 上左联接。

最佳答案

查询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'

关于mysql - 我如何加入这些查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601740/

相关文章:

php - 在 WordPress 结构中哪里可以找到 WP_CONTENT_DIR?

java - WHERE 中的 JPQL 单个集合元素

SQL:跨两个层次结构的完全外连接

mysql - 在同一个表中正确执行外连接

mysql - 如何在 laravel 5.0 中使用 outer full join?

mysql - 重复键更新时的 Node Mysql 仅更新唯一行

c# - 带有 Entity Framework 的动态多数据库上下文

mysql - 使用 IF 语句进行交叉表查询

MySQL JOIN 返回意外值

sql - 需要理解SQL代码中的COUNT()和多个LEFT JOIN错误