電子書籍の厳選無料作品が豊富!

プログラミングを始めたばかりの初心者ですが、教えてください。

1から1万までのデータ、たとえばその年の納税額ランキングの1位から1万位の氏名だけのデータがあるとします。それを単純に10年分並べたカラムが10の表をつくりたいのですが、どのようにしたら一番速くなるのでしょうか。
エクセルなら単純にコピーしたらよいのですが、各年の1位から1万位を結合したら(私のやり方が間違っているのかもしれませんが)とても時間がかかります。何卒お願いいたします。

A 回答 (5件)

ってことは総じてこんな感じでしょうか?



table1
rankperson
1Aさん
2Bさん
3Cさん

table2
rankperson
1Bさん
2Cさん
3Aさん

table3
rankperson
1Cさん
2Aさん
3Bさん

これを一覧にするのであればtable1のrankフィールドをベースに
こんな感じで・・・

SELECT t1.rank,t1.person,t2.person,t3.person
FROM table1 as t1
INNER JOIN table2 as t2 ON t1.rank=t2.rank
INNER JOIN table3 as t3 ON t1.rank=t3.rank
    • good
    • 0
この回答へのお礼

解決しました。とても速くなりました。
INNER JOIN の使い方も知らない素人に
本当に丁寧に教えていただき
誠にありがとうございました。

お礼日時:2008/03/11 20:43

たびたび申し訳ないです



通常このようなやり方をする場合ランキング用のフィールド(1~1万までの連番)が
あるとおもいますが本当に名前だけなのですか?

SQLではデータの格納順に表示されることは保証されていません。
なので名前だけが羅列されているだけではランクを表すことに使えません。
(仮に順番がかわらないように見えてもそういうものではないのです)

なので、今のままの命題では10年分のランキングを横方向に羅列することは
困難です。
ランク用のフィールドもしくは序列をつけるようなデータがあるのであれば
その辺の構造がわかるような補足が必要になります

この回答への補足

すみません。ランキング用のフィールドはあります。
よろしくお願いします。

補足日時:2008/03/11 13:36
    • good
    • 0

もう一個、


10年分のデータはテーブルが分かれているのでしょうか?
それとも一つのテーブルに年を明示するフィールドが存在するのでしょうか?

この回答への補足

早速ありがとうございます。
10年分のデータはテーブルが分かれています。
10のテーブルで、各テーブルのカラムは1です。
よろしくおねがいします。

補足日時:2008/03/11 12:47
    • good
    • 0

状況が判断できません



たとえば・・・
今年:1位Aさん、2位Bさん、3位Cさん
去年:1位Cさん、2位Aさん、3位Bさん
など順位が違うだけで要素が常に一定なのか

今年:1位Aさん、2位Bさん、3位Cさん
去年:1位Xさん、2位Aさん、3位Bさん
など要素が違うのか

によって書き方がことなります。

で、出力も結果としてどういう形式のデータを表示したいのかを
補足したほうがよいでしょう

この回答への補足

質問があいまいで申し訳ございません。
1万件の要素は一定です。(毎年順位だけが違う。今回の例では現実にはありえませんが)
出力結果は左から順番に列を10列並べる(ハサミで切った10枚の細長い紙を横にきれいにあわせて並べる)感じです。

横方向の和結合?だと思いますが、何卒よろしくお願いします。

補足日時:2008/03/11 12:24
    • good
    • 0

単純なスピードアップの方法は、たった一行入れればいいだけです。



Application.ScreenUpdating = False

これを変数などの定義(Dim文)の次あたりに入れてみてください。
これはマクロ実行中はExcelのセルへの変更を一時的にとめるという意味のもので、マクロ実行後に各セルへの変更が行われます。

データ量が多い場合に特に有効です。
特に有効なのは、各セルにデータだけでなく、計算式が入っていたりすると数倍~数十倍近く早くなります。

この回答への補足

ありがとうございます。ただ、
今回はExcelマクロではなく、
mysql でお願いいたします。

補足日時:2008/03/11 09:30
    • good
    • 0

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