![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
各クラスに、田中・鈴木・佐藤が何人いるかMySQLのデータベースからカウントし
HTMLでテーブルを組んで、それぞれの人数を表示しています。
【カウント用PHP】
$cnt_A = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%田中%' AND class LIKE '%1組%'";
$cnt_recordSet_A = mysql_query($cnt_A);
$table_A = mysql_fetch_assoc($cnt_recordSet_A);
$A = number_format($table_A['cnt_A']);
$cnt_B = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%鈴木%' AND class LIKE '%1組%'";
$cnt_recordSet_B = mysql_query($cnt_B);
$table_B = mysql_fetch_Bssoc($cnt_recordSet_B);
$B = number_format($table_B['cnt_B']);
$cnt_C = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%佐藤%' AND class LIKE '%1組%'";
$cnt_recordSet_C = mysql_query($cnt_C);
$table_C = mysql_fetch_Cssoc($cnt_recordSet_C);
$C = number_format($table_C['cnt_C']);
$cnt_D = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%田中%' AND class LIKE '%2組%'";
$cnt_recordSet_D = mysql_query($cnt_D);
$table_D = mysql_fetch_Dssoc($cnt_recordSet_D);
$D = number_format($table_D['cnt_D']);
$cnt_E = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%鈴木%' AND class LIKE '%2組%'";
$cnt_recordSet_E = mysql_query($cnt_E);
$table_E = mysql_fetch_Essoc($cnt_recordSet_E);
$E = number_format($table_E['cnt_E']);
$cnt_F = "SELECT COUNT(*) AS cnt FROM table WHERE name LIKE '%佐藤%' AND class LIKE '%2組%'";
$cnt_recordSet_F = mysql_query($cnt_F);
$table_F = mysql_fetch_Fssoc($cnt_recordSet_F);
$F = number_format($table_F['cnt_F']);
【表示用PHP】
+------+-----------------+-------------------+
|----|1組 |2組 |
+------+-----------------+-------------------+
|田中|<?PHP print $A ?>人|<?PHP print $D ?>人|
+------+-----------------+-------------------+
|鈴木|<?PHP print $B ?>人|<?PHP print $E ?>人|
+------+-----------------+-------------------+
|佐藤|<?PHP print $C ?>人|<?PHP print $F ?>人|
+------+-----------------+-------------------+
(テーブルはHTMLで作成、コードは略します・・・)
今後、各テーブルにさらに
・男子の人数/女子の人数
表示例:
+------+---------------------------------------------------------------------+......
|田中|<?PHP print $A ?>人(男子:<?PHP print $A_boy ?>/女子:<?PHP print $A_girl ?>)|......
+------+---------------------------------------------------------------------+......
というように増やしていこう思ったのですが、
【カウント用PHP】がすごく長くなってしまって、スマートじゃないのではないかと疑問に思っています。
簡潔なやり方などご存じの方いましたらご教授お願い致します。
No.1ベストアンサー
- 回答日時:
以下のようにUNION(読みはユニオンです。
ウニオンではありません)でデータの取得を1回で済ませて表示の部分の記述を1箇所にする。という方法はあるかも知れません。(SELECT '田中' AS 氏名, (SELECT COUNT(*) FROM table WHERE name LIKE '%田中%' AND class LIKE '%1組%') AS 1組, (SELECT COUNT(*) FROM table WHERE name LIKE '%田中%' AND class LIKE '%2組%') AS 2組)
UNION ALL
(SELECT '鈴木' AS 氏名, (SELECT COUNT(*) FROM table WHERE name LIKE '%鈴木%' AND class LIKE '%1組%') AS 1組, (SELECT COUNT(*) FROM table WHERE name LIKE '%鈴木%' AND class LIKE '%2組%') AS 2組)
No.2
- 回答日時:
こんな風にテンポラリテーブルを使ってやるといいです
ちなみに'%田中%'だと大田中とかひっかかりますがいいですか?
//準備
create table hoge (id int,name varchar(20),class varchar(20));
insert into hoge values(1,'田中A','1組'),(2,'田中B','1組'),(3,'田中C','2組'),(4,'大田中A','1組'),(5,'佐藤A','2組'),(6,'佐藤B','2組'),(7,'佐藤C','2組'),(8,'鈴木A','1組'),(9,'鈴木B','1組'),(10,'鈴木C','1組');
//ここから
create temporary table fuga(name varchar(20));
insert into fuga values('田中'),('佐藤'),('鈴木'),('高橋');
select fuga.name,sum(class like '%1組%') AS 1組,sum(class like '%2組%') AS 2組
from fuga left join hoge on hoge.name like concat('%',fuga.name,'%') group by name
≫ちなみに'%田中%'だと大田中とかひっかかりますがいいですか?
お、おおぅ!!確かに!!
その辺も考慮して使います!!
回答ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) vbaで色付けされたセルを除外したいのですが 5 2023/01/28 17:22
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) 日付の計算方法 2 2022/07/01 23:35
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
PHPで入力フォームでデータを確...
-
phpでcookieがうまく保存されない
-
フォームで戻った際に入力済み...
-
[php初心者]サイトを見てデータ...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
プログラミング言語で、使える...
-
phpのクラスメソッドの定義が長...
-
アマゾンのような評価の星を選...
-
ファイルアップロードに関して...
-
掲示板のセキュリティについて...
-
Q&Aサイトを作成していてURLの...
-
アップロード画像数でCSSを分け...
-
PHP一覧表示した項目にリンクを...
-
PHPのセッション有効期限について
-
php 確認表示画面で値をSESSION...
-
php 完了画面の送信メールのコ...
-
PHPで訪問回数を表示するカウン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpのエラーについてです
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHPで絞り込み検索結果の件数を...
-
MySQLのデータを使ってプルダウ...
-
XAMMPが起動しません。
-
mysql_fetch_objectのエラー
-
mysql_resultのエラー
-
CSVをダウンロードさせた際、CS...
-
stringaddslashes 半角¥が消える
-
「mysqlclient」の事が分からな...
-
XAMPPで画面が真っ白になります。
-
会員登録したらメールが送られ...
-
PHP+mysqlでSQL文に文字数制限...
-
変数同士の引き算が出来ない
-
連想二次元配列のUNIXTIMEでの...
-
PHP/MySQL SQLエラーについて。
-
PHPでMySQLのレコードを削除したい
-
すいません。
-
インクルードによる不具合
おすすめ情報