Как выбрать строки table-article в table-article_category category_id = 5 также в table-article visible = 1 с помощью метода pdo и соединения?

$category_id = 5;

article_category
id | article_id | category_id
1  | 1          | 5
2  | 2          | 1
3  | 3          | 5

article
id | subject | visible
1  |         | 1
2  |         | 1        
3  |         | 1
4  |         | 1

table-article id equal table-article_category article_id

Это то, что я делаю сейчас, сначала выбираю массив table-article_category make, затем зацикливаюсь, чтобы выбрать table article.

... loop 
$sql = "SELECT * FROM article WHERE visible = :visible AND id = :id";
$stmt = $connect_db_article->prepare($sql);
$stmt->bindValue(':visible', $visible);
$stmt->bindValue(':id', $article_category[$i]['article_id']);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

Как использовать соединение, чтобы получить тот же результат?

$sql = "SELECT * FROM article_category SUM(article) WHERE article_category.category_id = :category_id AND visible = :visible";
$stmt = $connect_db_article->prepare($sql);
$stmt->bindValue(':category_id', $category_id);
$stmt->bindValue(':visible', $visible);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
0
user1775888 14 Авг 2014 в 01:23
Не используйте Word для редактирования кода. и и НЕ являются допустимыми кавычками PHP.
 – 
Marc B
14 Авг 2014 в 01:29
Я копирую код из Sublime edit в текстовом редакторе
 – 
user1775888
14 Авг 2014 в 01:33

1 ответ

Лучший ответ
SELECT * FROM article 
LEFT JOIN article_category 
  ON article_category.article_id = article.id 
WHERE article_category.category_id = 5;

Это работает в предположении, что статья может иметь более одной категории. Если у вас может быть только одна категория для каждой статьи, возможно, имеет смысл включить поле category_id в таблицу article.

1
bksi 14 Авг 2014 в 01:39