选择两个具有两个条件的表

时间:2014-08-13 21:23:16

标签: php mysql sql join pdo

如何使用pdo和join方法在table-article visible = 1中选择table-article_category category_id = 5中的table-article行?

$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数组然后循环选择表格文章

... 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);

如何使用join来获得相同的结果?

$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);

1 个答案:

答案 0 :(得分:1)

SELECT * FROM article 
LEFT JOIN article_category 
  ON article_category.article_id = article.id 
WHERE article_category.category_id = 5;

这是在假设一篇文章可以有多个类别的情况下工作的。如果每篇文章只能包含一个类别,那么在category_id表格中包含article字段可能会更有意义。