【问题标题】:Joining two tables in PHP/MySQL and displaying elements from both when data from one table is null and the other table's data is not [duplicate]在 PHP/MySQL 中加入两个表并在一个表中的数据为空且另一个表的数据不为空时显示这两个表中的元素 [重复]
【发布时间】:2015-11-08 03:09:29
【问题描述】:

我有两个表,一个包含发布到博客页面的文章,第二个表包含这些文章的 cmets。

我正在使用下面的函数来JOIN 这些并显示来自两者的数据。

function list_articles() { 
    include('core/db/db_connection.php');
    $sql = "SELECT blog.title, blog.content, blog.posted_by, blog.date, article_comments.comments, article_comments.comment_by
                FROM blog INNER JOIN article_comments
                ON blog.content_id = article_comments.comment_id
                -- WHERE blog.content != '' AND article_comments.comment_id != ''
                ORDER BY blog.content_id DESC";
    $result = mysqli_query($dbCon, $sql);
    while ($row = mysqli_fetch_array($result)) {
        echo 
            "<h5 class='posted_by'>Posted by " . $posted_by = $row['posted_by'] . " on " . $row['date'] . "</h5>" . 
            "<h1 class='content_headers'>" . $title = $row['title'] . "</h1>" . 
            "<article>" . $content = $row['content'] . "</article>" . 
            "<hr class='artline'>" . 
            "<div class='commented_by'>" . $row['comment_by'] . "</div>" . 
            "<div class='comments'>" . $row['comments'] . "</div>";
    }

我遇到的问题是,每当用户插入新的博客文章时,它都不会显示在网页上。如果我在另一个表中插入评论(按 ID 匹配),则该文章看起来很好。即使没有关联的 cmets,如何显示这些文章?

我试过-- WHERE blog.content != '' AND article_comments.comment_id = '' OR article_comments.comment_ID = ''但是没有效果

另外,您能否告知是否有更好的方法来定位这些而不是通过 ID?

【问题讨论】:

标签: php mysql


【解决方案1】:

替换这个:

FROM blog INNER JOIN article_comments

用这个:

FROM blog LEFT OUTER JOIN article_comments

INNER JOIN 要求被连接的表包含匹配的记录,实质上是从结果中过滤出不在两个表中的任何行。 OUTER JOIN 将显示第一个表中的所有记录(当然,与 WHERE 子句匹配)并在适用的情况下连接第二个表中的记录。

【讨论】:

  • 大卫,还有一个问题:是否可以将表 A 中的 column_id 与表 B 中的 column_id 链接起来?例如:如果 column_id A 的值为 6,如果 column_id B 大于列 id A 的值,则 column_id B 不应允许条目。
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多