php - 一个查询中的文章和评论

标签 php mysql sql subquery

假设我有两张 table :

文章(文章Id、文章详细信息)

评论(commentId、commentDetail、commentArticle)

我使用 commentArticle =articleId 链接文章评论

比方说,我通过此查询获取了文章;

SELECT * FROM articles ORDER BY articleId DESC

结果是;

Array(
    [0] => stdClass Object
        (
            [articleId] => 3
            [articleDetail] => The details of article 3
        )
    [1] => stdClass Object
        (
            [articleId] => 2
            [articleDetail] => The details of article 2
        )
    [2] => stdClass Object
        (
            [articleId] => 1
            [articleDetail] => The details of article 1
        )
    ...
)

你知道,像往常一样;)

我想只用一个查询来获取文章和评论。我尝试过这个;

SELECT 
    articles.*,
    comments.*
FROM 
    articles
LEFT JOIN
    comments ON comments.commentArticle = articles.articleId
ORDER BY
    articles.articleId
DESC

不!它不起作用。我想通过一次查询获取评论和文章,就像这样;

Array(
    [0] => stdClass Object
        (
            [articleId] => 3
            [articleDetail] => The details of article 3
            [articleComments] => Array(
                                [0] => stdClass Object
                                       (
                                            [commentId] => 1
                                            [commentDetail] => Details of comment 1
                                            [commentArticle] => 3
                                       )
                                [1] => stdClass Object
                                       (
                                            [commentId] => 2
                                            [commentDetail] => Details of comment 2
                                            [commentArticle] => 3
                                       )
                                [2] => stdClass Object
                                       (
                                            [commentId] => 3
                                            [commentDetail] => Details of comment 3
                                            [commentArticle] => 3
                                       )
                          )
        )
    [1] => stdClass Object
        (
            [articleId] => 2
            [articleDetail] => The details of article 2
            [articleComments] => Array( )
        )
    [2] => stdClass Object
        (
            [articleId] => 1
            [articleDetail] => The details of article 1
            [articleComments] => Array(
                                [0] => stdClass Object
                                       (
                                            [commentId] => 4
                                            [commentDetail] => Details of comment 4
                                            [commentArticle] => 1
                                       )
                                [1] => stdClass Object
                                       (
                                            [commentId] => 1
                                            [commentDetail] => Details of comment 5
                                            [commentArticle] => 3
                                       )
                          )
        )
    ...
)

有没有办法通过单个查询来做到这一点?甚至可能重新排列评论?

谢谢。

最佳答案

您可以选择此选项的唯一方法是始终在每条评论中包含文章信息。 没有办法做你想做的事。您将始终得到具有相同列数的行

关于php - 一个查询中的文章和评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689336/

相关文章:

mysql - 通过 ssh 进行工作台迁移 - 如何设置隧道

mysql - 特定合并sql中的2列,不包括其中一列

php - Mysql查询逗号分隔过滤结果

sql - 检查表A中的条目是否存在于表B中

PHP如何仅根据特定表类型计算总计

php - ajax GET - 来自 php 未通过的结果

mysql - 从第二个表中过滤关键字

php - 单击链接提交表单并发送到多个电子邮件 ID

php,如果数字是整数,则添加尾随零

php - mysql中的1a 1b 1c级别描述符