以前に「調査クエリー」と称して、ウェブ画面でSQL文を入力して実行できるツールを作成しました。それ以来いろいろなSQL文を作成することになったのですが、これはできないだろうというのが最近可能と判って、大喜びです。
DBテーブルのレコード数取得のSQL文は、例えば、
mysql> select count(*) as '商品数' from product; +-----------+ | 商品数 | +-----------+ | 31228 | +-----------+ 1 row in set (0.01 sec)
というように、fromでテーブルを指定して、count(*)です。
1つ以上のテーブルのレコード数を取得するには、もう1つのSQL文を連続して実行します。
mysql> select count(*) as '商品数' from product;select count(*) as '店舗数' from shop; +-----------+ | 商品数 | +-----------+ | 31228 | +-----------+ 1 row in set (0.01 sec) +-----------+ | 店舗数 | +-----------+ | 947 | +-----------+ 1 row in set (0.00 sec)
しかし、先の私の「調査クエリー」ツールでは、1つのSQL文しか1回に実行できないので、使えませんね。
私が欲しいのは、1つのSQL文で両方取得です。
なんと、これができるんだなあ。
mysql> select (select count(*) from product) as 商品数, (select count(*) from shop) as 店舗数; +-----------+-----------+ | 商品数 | 店舗数 | +-----------+-----------+ | 31228 | 947 | +-----------+-----------+ 1 row in set (0.01 sec)
SQL文を見やすくすると、
select ( select count(*) from product ) as 商品数, ( select count(*) from shop ) as 店舗数;
SELECT文の項目がそれぞれExpressionなので、項目がSELECT文でもいいのですね。
メルマガ購読の申し込みはこちらから。