任何帮助将不胜感激!

我正在尝试获取有关SINGLE作者(例如,表中具有第一个ID的第一位作者)的信息,并显示他的所有文章,仅此而已。

我正在尝试使用LEFT-JOIN子句的以下代码,并获得第一作者及其所有文章,但同时也包括其他作者和文章。

我是本条款的新手,有些帮助将非常有用。

我应该更改该条款还是?

$sql = <<<TAG
    SELECT authors.name as author_name,
           articles.title as article_title,
           articles.text as article_text,
           articles.author_id
    FROM authors
    LEFT JOIN articles
    ON authors.id = articles.author_id
TAG;


$result = mysqli_query($foo_connection, $sql);


if($result) {


    foreach($result as $key => $item_data){

        print $item_data['author_name']. " - " . $item_data['article_title'] . " - " . $item_data['article_text'] ."<br>";

    }

}
else {
    print "Something went wrong! ".mysqli_errno($sql);
}

最佳答案

您必须使用作者ID过滤结果。
如果要动态选择作者ID,则必须执行两个请求-第一个请求选择第一个作者(带有LIMIT 1),第二个请求选择该作者的所有文章。

您还可以在where子句中进行子查询,例如:

SELECT authors.name as author_name,
       articles.title as article_title,
       articles.text as article_text,
       articles.author_id
FROM authors
LEFT JOIN articles
ON authors.id = articles.author_id
WHERE authors.id IN (SELECT id FROM authors LIMIT 1)


该请求将仅选择表的第一作者(因为没有定义where子句且没有顺序,基本上是第一条语句)。

编辑:

如果您已经有其他地方的作者ID:

SELECT authors.name as author_name,
       articles.title as article_title,
       articles.text as article_text,
       articles.author_id
FROM authors
LEFT JOIN articles
ON authors.id = articles.author_id
WHERE authors.id = xxx


用您的作者ID替换xxx。

关于php - 在MySQL表中使用JOIN子句获取确切的作者和文章,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49751999/

10-15 03:42