私は私のプロジェクトをリストしたいとポストの量は、それぞれのプロジェクトがあります。テーブルをLEFT JOINして行をカウントするにはどうすればよいですか?
Project 1 has 2 posts.
Project 2 has 1 posts.
Project 3 has 0 posts.
Project 4 has 0 posts.
しかし、私はエラーメッセージを取得:
`projects` `posts`
------------------ ------------------
| `id` | `name` | | `id` | `name` |
------------------ ------------------
| 1 | Cat | | 1 | Cat |
| 2 | Dog | | 2 | Cat |
| 3 | Bird | | 3 | Dog |
| 4 | Frog | ------------------
------------------
$projects = $db->query('SELECT *,
COUNT(posts.*) AS posts
FROM projects
LEFT JOIN posts ON projects.name=posts.name
')->fetchAll(PDO::FETCH_ASSOC);
foreach($projects as $row) {
echo "Project ".$id." has ".$posts ".posts.".<br>";
}
その結果、私は期待し
をFatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS posts,
だから私はposts.*
に変更しました。posts.id
しかし、その後、私の結果は次のとおりです。
Project 1 has 3 posts.
私は今、実際に私が必要とする結果を達成するためにどのように混乱しています。