Любая помощь будет высоко оценена!
Я пытаюсь получить информацию о SINGLE-авторе (например, первый автор с первым идентификатором из таблицы) и отобразить все его статьи, и не более того.
Я пытаюсь использовать следующий код, используя предложение 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);
}
Вы должны отфильтровать результаты с помощью идентификатора автора. Если вы хотите динамически выбирать идентификатор автора, вам нужно будет выполнить два запроса: сначала выберите, где вы выбираете первого автора (с 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, а не порядок, в основном первый оператор).
РЕДАКТИРОВАТЬ:
Если у вас уже есть идентификатор автора из другого места:
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
Замените xxx на свой идентификатор автора.