SQLで SELECT した行数を知りたい。
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
いつも参考にしています。
Unipassから、SQLを発行し、SELECT した結果のデータ行数を知りたいのですがどうすればいいのでしょうか?
SQLRowCountという関数があるようですが、その使い方もわかりません。
宜しくお願いします。
Unipassから、SQLを発行し、SELECT した結果のデータ行数を知りたいのですがどうすればいいのでしょうか?
SQLRowCountという関数があるようですが、その使い方もわかりません。
宜しくお願いします。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Puです
SELECT COUNT
FROM hogeoge
WHERE hoge
count で返る値はintです
でわ〜でわ〜
SELECT COUNT
FROM hogeoge
WHERE hoge
count で返る値はintです
でわ〜でわ〜
投票数:0
平均点:0.00
KURITA
投稿数: 45
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
SQLRowCountでは、取得できないのではないでしょうか?
ヘルプには、更新系SQL(UPDATE,INSERT,DELETE)の
更新対象の該当件数を取得するとの記載があります。
SELECTで動くとの記載は見当たりませんでした。
(実働チェックをしていないので実際は
取得できるかもしれませんが)
良くやる手法としては、pu_mahaloさんの方法になるかと
思われます。
ヘルプには、更新系SQL(UPDATE,INSERT,DELETE)の
更新対象の該当件数を取得するとの記載があります。
SELECTで動くとの記載は見当たりませんでした。
(実働チェックをしていないので実際は
取得できるかもしれませんが)
良くやる手法としては、pu_mahaloさんの方法になるかと
思われます。
投票数:0
平均点:0.00
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
ありがとうございます。
SELECT COUNT
FROM hogeoge
WHERE hogeではカウントはとれないのではないでしょうか?
SELECT COUNT(*)
FROM hogeoge
WHERE hoge
だと思いますが、
質問の仕方がまずかったようです。
単に、行数だけを取るのではなくて、
たとえば、
SELECT * FROM xxxxxx
として、データを取得するとともに、
取得した行数を知りたいのです。
宜しくお願いします。
SELECT COUNT
FROM hogeoge
WHERE hogeではカウントはとれないのではないでしょうか?
SELECT COUNT(*)
FROM hogeoge
WHERE hoge
だと思いますが、
質問の仕方がまずかったようです。
単に、行数だけを取るのではなくて、
たとえば、
SELECT * FROM xxxxxx
として、データを取得するとともに、
取得した行数を知りたいのです。
宜しくお願いします。
投票数:0
平均点:0.00
Jiro123
投稿数: 271
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
SELECT文で、COUNT のような集計関数を使用すると、同時にカラムの値の取得はできないと思います。
例えば、
SELECT COUNT(*) , id , name FROM TABLE1
のように、集計関数と、カラムを記述した SELECT文を実行するとエラーになりますよね。
集計関数は、指定した列の集計計算をした結果を返します。
全レコードに対してであれば、1つの値が返されます。
最終的に行数が取得できればよいのであれば、
ROW_NUMBER 関数(分析関数)を利用して、
レコードに連番を振るようなクエリにするというのはどうでしょう。
SELECT id , name , ROW_NUMBER() OVER (ORDER BY id) AS SEQ
FROM TABLE1
最後のレコードで行数が取得できます。
ORDER BY 句では主キーのカラムを指定します。
主キーが2つ以上の場合は、カンマで区切って指定します。
例えば、
SELECT COUNT(*) , id , name FROM TABLE1
のように、集計関数と、カラムを記述した SELECT文を実行するとエラーになりますよね。
集計関数は、指定した列の集計計算をした結果を返します。
全レコードに対してであれば、1つの値が返されます。
最終的に行数が取得できればよいのであれば、
ROW_NUMBER 関数(分析関数)を利用して、
レコードに連番を振るようなクエリにするというのはどうでしょう。
SELECT id , name , ROW_NUMBER() OVER (ORDER BY id) AS SEQ
FROM TABLE1
最後のレコードで行数が取得できます。
ORDER BY 句では主キーのカラムを指定します。
主キーが2つ以上の場合は、カンマで区切って指定します。
投票数:0
平均点:0.00
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
ありがとうございます。
ROW_NUMBER() はあまり使いたくないですね!
.NETでのRows.countみたいなものは何故ないのでしょうネ!
不思議です。
ROW_NUMBER() はあまり使いたくないですね!
.NETでのRows.countみたいなものは何故ないのでしょうネ!
不思議です。
投票数:0
平均点:0.00
tiyn
投稿数: 70
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
件数が少ないのならば、DbViewSizeとかでもいいと思います。
DBが最近のOracleだと、
select count(1) over() , h.* from hoge h
とかでもいいような気がします。
DBが最近のOracleだと、
select count(1) over() , h.* from hoge h
とかでもいいような気がします。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Puです
>.NETでのRows.countみたいなものは何故ないのでしょうネ!
>不思議です。
それはDataSetだからなせるのではないでしょうか
同じような仕組みにするなら
仮想的にDataSetと同じ流れにするなら
埋め込みSQLで抽出したレコードを
メモリーテーブルに格納したのち
dbrecs で件数を取得する と言う流れになるのでは
>.NETでのRows.countみたいなものは何故ないのでしょうネ!
>不思議です。
それはDataSetだからなせるのではないでしょうか
同じような仕組みにするなら
仮想的にDataSetと同じ流れにするなら
埋め込みSQLで抽出したレコードを
メモリーテーブルに格納したのち
dbrecs で件数を取得する と言う流れになるのでは
投票数:1
平均点:10.00
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
いろいろありがとうございます。
このあたりはMagicの弱いところだと感じます。
Magicがもっと洗練されたものになることを切望します。
このあたりはMagicの弱いところだと感じます。
Magicがもっと洗練されたものになることを切望します。
投票数:0
平均点:0.00
s_nagura
投稿数: 109
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
DbViewSize関数で実現できないでしょうか?
http://www.magicsoftware.co.jp/files/magic_help/uniPaaS1Plus/Expression_Editor/DbViewSize.htm
使った事はないので、はずしていたらすみません。
http://www.magicsoftware.co.jp/files/magic_help/uniPaaS1Plus/Expression_Editor/DbViewSize.htm
使った事はないので、はずしていたらすみません。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
satuki6 さん、こんにちは。
実は、Magic にとっては、埋め込み SQL は単なる付録に過ぎません。
たいていの場合、埋め込み SQL を使用しなくてもアプリが作成できます。
どちらかというと、埋め込み SQL は SQL コマンドしか知らない人達の
ために Magic 側に用意されたようなものだとも言えます。
ですので、Magic のことをだんだん理解していくうちに、SQL コマンドを
使わずにどうやって Magic でアプリを作って行ったらいいかが分かって
くると思います。
頑張ってください。
タンダコンピュータ/丹田 昌信
実は、Magic にとっては、埋め込み SQL は単なる付録に過ぎません。
たいていの場合、埋め込み SQL を使用しなくてもアプリが作成できます。
どちらかというと、埋め込み SQL は SQL コマンドしか知らない人達の
ために Magic 側に用意されたようなものだとも言えます。
ですので、Magic のことをだんだん理解していくうちに、SQL コマンドを
使わずにどうやって Magic でアプリを作って行ったらいいかが分かって
くると思います。
頑張ってください。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
null
投稿数: 191
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
何だか本題と脱線しているのがアレですがこの件については satuki6 さんの考えと同じく
データ取得の SQL 発行時に件数が取得出来たら良いのにとたまに思います。
「処理件数 / 全体件数」のような表示をしたい場合、現状は一回、
別タスクで SELECT COUNT(*) する必要がありますから・・・
DataSet とは違うのも判るんですが、UPDATE の処理件数を戻り値にセット出来るなら
ついでに SELECT 時も簡単に取得出来る仕組みも欲しいですよねぇ
私も処理速度重視で埋込み SQL を使ってますが、
この辺りも含め簡素にならないものかと思います。
データ取得の SQL 発行時に件数が取得出来たら良いのにとたまに思います。
「処理件数 / 全体件数」のような表示をしたい場合、現状は一回、
別タスクで SELECT COUNT(*) する必要がありますから・・・
DataSet とは違うのも判るんですが、UPDATE の処理件数を戻り値にセット出来るなら
ついでに SELECT 時も簡単に取得出来る仕組みも欲しいですよねぇ
私も処理速度重視で埋込み SQL を使ってますが、
この辺りも含め簡素にならないものかと思います。
投票数:0
平均点:0.00
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
丹田様
いろいろありがとうございます。
色々な考えはあると思いますが「埋め込み SQL は単なる付録」である事が残念ですね!
SQLを使用したほうがパフォーマンスがあがるものは多くあります。プログラムそのものもよりシンプルになります。
SQLを使用してのDBが殆どの時代、その良さを最大限に生かせるよう是非、改善する方向で考えて欲しいものですネ。
いろいろありがとうございます。
色々な考えはあると思いますが「埋め込み SQL は単なる付録」である事が残念ですね!
SQLを使用したほうがパフォーマンスがあがるものは多くあります。プログラムそのものもよりシンプルになります。
SQLを使用してのDBが殆どの時代、その良さを最大限に生かせるよう是非、改善する方向で考えて欲しいものですネ。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
satuki6 さん、こんにちは。
SQL 文を使ったコーディング等がメインになって行きますと、それは
もうほとんどコーディング言語の世界と同じになってしまって、せっかく
の Magic の良さが損なわれて行ってしまうからです。
Magic の良さは、.NET を知らない人でも、あるいは SQL を知らない
人でも、簡単に業務アプリを構築できるというところにあるからです。
Microsoft でさえ、今、Magic の良さを見直そうとしています。
まだ、ここでは公表はできませんが。。。
タンダコンピュータ/丹田 昌信
SQL 文を使ったコーディング等がメインになって行きますと、それは
もうほとんどコーディング言語の世界と同じになってしまって、せっかく
の Magic の良さが損なわれて行ってしまうからです。
Magic の良さは、.NET を知らない人でも、あるいは SQL を知らない
人でも、簡単に業務アプリを構築できるというところにあるからです。
Microsoft でさえ、今、Magic の良さを見直そうとしています。
まだ、ここでは公表はできませんが。。。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
05540
投稿数: 19
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Tandaさん、こんにちは。
通りすがりです。
> Microsoft でさえ、今、Magic の良さを見直そうとしています。
> まだ、ここでは公表はできませんが。。。
LS絡みですか?
いえ、NoResで構いません。
失礼しました。
通りすがりです。
> Microsoft でさえ、今、Magic の良さを見直そうとしています。
> まだ、ここでは公表はできませんが。。。
LS絡みですか?
いえ、NoResで構いません。
失礼しました。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
05540 さん、こんにちは。
うっ!^^;
タンダコンピュータ/丹田 昌信
うっ!^^;
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
satuki6
投稿数: 64
![常連 常連](../../uploads/rank3dbf8e9e7d88d.gif)
ありがとうございます。
VB.NETでもクエリーをコーディングしないでプログラムは作成できますね。Accessも同じです。
しかし、クエリーも使ってより自由度のあるアプリを作成できるようになっています。
.NET を知っている人、あるいは SQL を知っている人は、それをより有効に使えればいいのではないでしょうか?
簡単に業務アプリを構築できるのがMagicの良さが、そこまでで留まるのはもったいないですね!
更に良くすれと思います。
VB.NETでもクエリーをコーディングしないでプログラムは作成できますね。Accessも同じです。
しかし、クエリーも使ってより自由度のあるアプリを作成できるようになっています。
.NET を知っている人、あるいは SQL を知っている人は、それをより有効に使えればいいのではないでしょうか?
簡単に業務アプリを構築できるのがMagicの良さが、そこまでで留まるのはもったいないですね!
更に良くすれと思います。
投票数:0
平均点:0.00
05540
投稿数: 19
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Tandaさん、こんにちは。
> うっ!^^;
ほう! (^^
> うっ!^^;
ほう! (^^
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
05540 さん、こんにちは。
最近の MS は、uniPaaS をすごい意識しているみたいですよ。
ただし、アメリカでの話ですが。。。
日本の MS は相変わらず、のんきなものです。
ところで、05540 さんって、どなたでしょうか?
過去ログを見てみると、すごい古い話もご存知のようですし。。。
あ、NoRes で構いません。^^;
タンダコンピュータ/丹田 昌信
最近の MS は、uniPaaS をすごい意識しているみたいですよ。
ただし、アメリカでの話ですが。。。
日本の MS は相変わらず、のんきなものです。
ところで、05540 さんって、どなたでしょうか?
過去ログを見てみると、すごい古い話もご存知のようですし。。。
あ、NoRes で構いません。^^;
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
05540
投稿数: 19
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
Tandaさん、こんにちは。
> ところで、05540 さんって、どなたでしょうか?
> 過去ログを見てみると、すごい古い話もご存知のようですし。。。
Nifty時代はLDI02324と名乗っていました。(^^
まぁ、そんなところで・・・。
> ところで、05540 さんって、どなたでしょうか?
> 過去ログを見てみると、すごい古い話もご存知のようですし。。。
Nifty時代はLDI02324と名乗っていました。(^^
まぁ、そんなところで・・・。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
05540 さん、こんにちは。
分かりました。
いつも、お世話になっております。(^^;
タンダコンピュータ/丹田 昌信
分かりました。
いつも、お世話になっております。(^^;
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00