[前][次][番号順一覧][スレッド一覧]

mysql:13477

From: "F.Yamazaki" <"F.Yamazaki" <fumihiko@xxxxxxxxxx>>
Date: Sun, 12 Nov 2006 11:55:51 +0900
Subject: [mysql 13477] Re: レコード件数0をカウントしたい

こんにちは。先日、下記の件でアドバイス頂き運用していたのですが、
Table:dataのカウント0が2件存在した場合、1件のみの出力となってしまう
現象が発生しました。
LEFT JOINに関して特に問題ないように思うのですが、仕方ないのでしょうか。
解決法、アドバイスいただければ幸いです。

SELECT syain.no, syain.name, COUNT(data.no)
FROM syain LEFT JOIN data ON syain.no = data.no
GROUP BY data.no
ORDER BY syain.no

の出力は、

+---+------+--------------------+
|no | name | COUNT( data . no ) |
+---+------+--------------------+
| 1 | 山田 |                  2 |
| 2 | 佐藤 |                  0 |
| 3 | 山本 |                  3 |
| 4 | 吉田 |                  1 |
| 6 | 田中 |                  2 |
+---+------+--------------------+

となり、期待する出力、

+---+------+--------------------+
|no | name | COUNT( data . no ) |
+---+------+--------------------+
| 1 | 山田 |                  2 |
| 2 | 佐藤 |                  0 |
| 3 | 山本 |                  3 |
| 4 | 吉田 |                  1 |
| 5 | 中村 |                  0 |←この行がない
| 6 | 田中 |                  2 |
+---+------+--------------------+

となりません。


*使用したテストのテーブルはこちらです

-- phpMyAdmin SQL Dump
-- version 2.6.4-pl4
-- http://www.phpmyadmin.net
-- 
-- ホスト: localhost
-- 作成の時間: 2006 年 11 月 12 日 11:30
-- サーバーのバージョン: 4.0.26
-- PHP バージョン: 4.3.9
-- 
-- データベース: `yamazaki_test`
-- 

-- --------------------------------------------------------

-- 
-- テーブルの構造 `data`
-- 

CREATE TABLE `data` (
  `no` tinyint(4) NOT NULL default '0',
  `etc` varchar(10) NOT NULL default ''
) TYPE=MyISAM;

-- 
-- テーブルのダンプデータ `data`
-- 

INSERT INTO `data` VALUES (1, 'AAAA');
INSERT INTO `data` VALUES (3, 'BBBB');
INSERT INTO `data` VALUES (1, 'CCCC');
INSERT INTO `data` VALUES (4, 'DDDD');
INSERT INTO `data` VALUES (3, 'EEEE');
INSERT INTO `data` VALUES (6, 'FFFF');
INSERT INTO `data` VALUES (6, 'GGGG');
INSERT INTO `data` VALUES (3, 'HHHH');

-- --------------------------------------------------------

-- 
-- テーブルの構造 `syain`
-- 

CREATE TABLE `syain` (
  `no` int(4) NOT NULL default '0',
  `name` varchar(10) NOT NULL default ''
) TYPE=MyISAM;

-- 
-- テーブルのダンプデータ `syain`
-- 

INSERT INTO `syain` VALUES (1, '山田');
INSERT INTO `syain` VALUES (2, '佐藤');
INSERT INTO `syain` VALUES (3, '山本');
INSERT INTO `syain` VALUES (4, '吉田');
INSERT INTO `syain` VALUES (5, '中村');
INSERT INTO `syain` VALUES (6, '田中');





"Hiroshi Kabayama" <kaba@xxxxxxxxxx>さん:
> こんにちははじめまして。樺山と申します。
> 
> 実際にサンプルで記載されているテーブルを作成し
> 下記SQL文を実行したところ予想通りの結果が取れました。
> 
> SELECT syain.no, syain.name, COUNT(data.no)
> FROM syain LEFT JOIN data ON syain.no = data.no
> GROUP BY data.no
> 
> LEFT JOINすることにより、syainテーブルが主となる為
> 0件でも出力されるようになります。
> 
> 
> ----- Original Message ----- 
> From: "F.Yamazaki" <fumihiko@xxxxxxxxxx>
> To: <ml@xxxxxxxxxx>
> Sent: Thursday, October 26, 2006 4:17 PM
> Subject: [mysql 13429] レコード件数0をカウントしたい
> 
> 
> > はじめまして。
> > まだ始めたばかりで、いろいろ試してみたのですが解決できませんでした。
> > 皆さんの知識をお借りできればと思います。
> > MySQL 4.0.26の環境でやっています。
> >
> > Table:syain      Table:data
> > +----+------+    +----+------+
> > | no | name |    | no | etc  |
> > +----+------+    +----+------+
> > |  1 | 山田 |    |  1 | AAAA |
> > |  2 | 佐藤 |    |  3 | BBBB |
> > |  3 | 山本 |    |  1 | CCCC |
> > |  4 | 吉田 |    |  4 | DDDD |
> > +----+------+    |  3 | EEEE |
> >                 +----+------+
> >
> > この2つのテーブルから、syainに登録されている各人についてdataから件数(レコード数)を
> > カウントしたいのです。
> >
> > SELECT `syain`.`no`,`syain`.`name`,COUNT(`data`.`no`) FROM `syain`,`data`
> > WHERE `syain`.`no` = `data`.`no`  ROUP BY  `data`.`no`
> >
> > ここまではたどり着いたのですが、結果は
> >
> > +----+------+---------------------+
> > | no | name | COUNT(`data`.`no`) |
> > +----+------+---------------------+
> > |  1 | 山田 |                   2 |
> > |  3 | 山本 |                   2 |
> > |  4 | 吉田 |                   1 |
> > +----+------+---------------------+
> >
> > で、カウント0の佐藤さんはリストされません。
> >
> > +----+------+---------------------+
> > | no | name | COUNT(`data`.`no`) |
> > +----+------+---------------------+
> > |  1 | 山田 |                   2 |
> > |  2 | 佐藤 |                   0 |
> > |  3 | 山本 |                   2 |
> > |  4 | 吉田 |                   1 |
> > +----+------+---------------------+
> >
> > のように、0でもリストさせたいのですが、良い方法はありますでしょうか。
> > よろしくお願いします。
> >
> > ------------------
> > From:山崎文彦

------------------
From:山崎文彦


[前][次][番号順一覧][スレッド一覧]

     13429 2006-10-26 16:17 ["F.Yamazaki" <fumihi] レコード件数0をカウントしたい          
     13430 2006-10-26 16:34 ┗["Hiroshi Kabayama" <]                                       
     13431 2006-10-26 16:52  ┣["F.Yamazaki" <fumihi]                                     
->   13477 2006-11-12 11:55  ┗["F.Yamazaki" <fumihi]                                     
     13478 2006-11-12 12:23   ┗[SAKAI Kei <sak2@xxxx]                                   
     13479 2006-11-12 13:23    ┗["F.Yamazaki" <fumihi]