【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

OracleのSQL文について質問させて頂きます。
以下のようなテーブルが存在するとします。

ID  品名  個数
001 みかん 1
002 りんご 2
003 ぶどう 2

このテーブルから、以下のような結果を取得したいのです。

ID  品名  個数
001 みかん 1
002 りんご 2
002 りんご 2
003 ぶどう 2
003 ぶどう 2

個数の数だけレコードを返す形です。
どういうSQLを組めばよいのか、わかりません。

お手数ですが、どなたかわかる方いらっしゃいましたら
ご回答頂けますと幸いです。よろしくお願い致します。

A 回答 (3件)

初心者のため見当違いであればお許しください。



ひとつダミーのテーブル(dummy)を準備しておきます。

create table dummy (countd int);

countd
---------
1
2
3
4
5
6
7

...



最大値は、テーブルfruitのmax(個数)以上です。

SQL文は、

select id,品名,個数 from fruit CROSS JOIN dummy where 個数>=cound;

ですが、どうでしょうか。
    • good
    • 0
この回答へのお礼

お礼が遅れましてすみません。

「CROSS JOIN」は確かによいと思うのですが、
残念ながらMAX値がわからないので……。

でも、工夫次第でできそうな気がしますね。
ご親切に回答くださったのに、
お礼が遅れて本当に申し訳ありませんでした。

ありがとうございました。

お礼日時:2008/03/12 23:20

#1です。



クライアント側での処理をさぼるために、サーバ側から受け取るデータ量を2倍、3倍、あるいはそれ以上としていいかどうか考えてみてください。

例えば、のべ1万件受け取ればいいものを、2万件や3万件なら、まだ差は気にならないかも知れません。
これがデータ量や時間が蓄積していき、のべ1億件受け取ればいいものを、2億件や3億件になっても許容できるのでしょうか?
これが許容できるのなら、冗長なSQLにしてもいいと思います。
    • good
    • 0
この回答へのお礼

お返事が遅くなりました。
ご親切に回答下さっているのにすみません。

件数に関しては、最大件数が5000以下までと決まっているので
問題ないと思います。

お礼日時:2008/02/29 02:15

こういった処理は、SQLでなくアプリケーションでやった方がシンプルで性能も出ます。

SQLで無理矢理やろうとすると、冗長になるだけです。
    • good
    • 0
この回答へのお礼

chukenkenkouさん、ご回答ありがとうございます。

やはり一括のSQLでやるのは難しいでしょうか。
諸事情ありまして、アプリケーションなどを作成すると
開発以外の部分で手間が増えるのです。
それでSQLだけでできればなと思ったのですが……

多少無理やりでもよかったのですが、
方法がないのであれば、chukenkenkouさんの仰るとおり、
SQLだけで行うのはやめることにします。
ご親切にお答えくださり、ありがとうございました。

お礼日時:2008/02/25 01:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報