こんにちは、いつもお世話になっております。
3つのテーブルを外部結合して、group byしたカラム(今回の場合,userId)ごとのcount件数が合わなくて困っています。
現状今のテーブル構成は以下の通りとなっています。
カラム[id]はどのテーブルもauto incrementされたものとなっています。
◆アカウントTBL
|id|userId|userName|
|01|000001|testuser1|
|02|000002|testUser2|
|03|000003|testUser3|
|04|000004|testUser4|
◆投稿TBL
|id|toukouId|userId|toukouText|
|01|01010101|000001|aaaaaa|
|02|03030303|000003|bbbbbb|
|03|01010102|000001|cccccc|
|04|02020202|000002|dddddd|
◆投稿画像TBL(1つの投稿につき複数枚の画像が投稿可能です。また、画像なしの投稿もありえます)
|id|toukouId|userId|imgFile|
|01|01010101|000001|img1|
|02|01010101|000001|img2|
|03|01010102|000001|img3|
|04|02020202|000002|img4|
SELECT文の期待する結果としては以下のようになっています。
◆期待結果
|userId|userName|count(投稿数)|count(画像数)|
|000001|testuser1|2|3|
|000002|testUser2|1|1|
|000003|testUser3|1|0|
|000004|testUser4|0|0|
ただ、3つ以上のテーブルを外部結合して同時に取得したいのですがcount(投稿数、画像数)の値が異常に大きな数値が返ってきます。
テーブル2つの外部結合では正確な値が取得できるのですが、3つめを外部結合した瞬間にダメになります。
参考として試したSQL文を以下に記載します。
◆2つのテーブルだけを外部結合した際のSQL(正確な値が表示されるパターン)
lang
1SELECT U.userId, U.userName, COUNT(T.toukouId) as tCount 2 FROM アカウントTBL U LEFT JOIN 投稿TBL T ON U.userId = T.toukouId group by U.userId
◆3つのテーブルを外部結合した際のSQL(異常な値が返されるパターン)
lang
1SELECT U.userId, U.userName, COUNT(T.toukouId) as tCount COUNT(I.toukouId) as iCount 2 FROM アカウントTBL U LEFT JOIN 投稿TBL T ON U.userId = T.userId 3 LEFT JOIN 投稿画像TBL I ON U.userId = I.userId group by U.userId
基本的に、3つ目の同じように外部結合すればいいだけだと思っていたのですが・・・
調べてからかなりの時間がかかっているので、ご教授お願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/10 03:30