任何帮助将不胜感激!
我正在尝试获取有关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/