Получение точного автора и статей с предложением JOIN в таблице mySQL

0

Любая помощь будет высоко оценена!

Я пытаюсь получить информацию о 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);
}
  • 1
    Возможно, вам придется упомянуть пункт where, чтобы отфильтровать автора и статьи
  • 0
    Что вы подразумеваете под предложением WHERE?
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Вы должны отфильтровать результаты с помощью идентификатора автора. Если вы хотите динамически выбирать идентификатор автора, вам нужно будет выполнить два запроса: сначала выберите, где вы выбираете первого автора (с 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 на свой идентификатор автора.

  • 0
    Предупреждение: mysqli_errno () ожидает, что параметр 1 будет mysqli, строка указана в C: \ xampp \ htdocs \ PROJECTS \ Php-joins \ Php-left-right-join \ index.php в строке 34 Что-то пошло не так!
  • 0
    Строка 34 - это mysql_errno в if ($ result). Что означает что-то в приведенном выше коде неправильно?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню