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]