【问题标题】:Newbie trying to solve a MySQL query logic issue新手尝试解决 MySQL 查询逻辑问题
【发布时间】:2013-03-07 19:38:13
【问题描述】:

我将尽可能简单地解释这一点。任何帮助将不胜感激,因为我不太擅长设计查询。

我有 3 个表:(我已经为这个问题减少了 users 表中不必要的列)

USERS:
id,    username,    password

PENDINGREVIEW:
id,    articleid,    requestid,    content,    writerid,    datewritten

ARTICLES:
id,    title,    length,    requestedby,    content,    writtenby,    daterequested,    datecompleted

假设我有review.php。在review.php 上,我希望它显示pendingreview 表中针对特定用户的所有文章。所以是这样的:

SELECT * FROM pendingreview WHERE requestid = $userid (where $userid = the id of the user)

我实际上想在review.php 上显示的是来自articles 表的文章列表,以及pendingreview 表中有多少文章与这些文章相对应。该列表只能由用户请求的文章组成。

所以我希望review.php 看起来像这样:

  • Your "How to build a bike" article request has 3 articles pending review.
  • Your "How to mow the lawn" article request has 12 articles pending review.

任何关于我如何做到这一点的帮助将不胜感激!

【问题讨论】:

  • 我没有问号。请先尝试一下。并阅读faq
  • 我会使用什么查询?我不知道从哪里开始!
  • @KriiV 您的SELECT ... 示例正朝着一个好的方向发展。你会想要JOIN你的表:[mysql-manual] (dev.mysql.com/doc/refman/5.1/en/join.html) 并在你的文章的ID上使用count...
  • 你不需要任何人给你一个查询。您需要学习 MySql 或让某人参与您的项目。在此查询之后,您将需要一个又一个...

标签: php mysql sql join


【解决方案1】:
SELECT  a.title, COUNT(*) TotalPending
FROM    Articles a
        INNER JOIN PendingReview b  
            ON a.ID = b.articleID
WHERE   b.RequestID = 'ID HERE'
GROUP   BY a.title

如需进一步了解联接,请访问以下链接:

【讨论】:

  • #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'a.ID = b.articleID WHERE b.RequestID = '3' GROUP BY a.title LIMIT 0, 30' 附近使用正确的语法
  • 非常感谢 JW。 Itachi,我试过了,我发现我应该从哪里开始很困惑。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多