- - PR -
列の内容を結合
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-09-26 17:26
はじめまして。
データベースはほぼ初心者なので、 皆さんのお知恵を拝借したいと思っております。 ACCESSを使って、 Key:Value1 A :あいう A :かきく B :あいう B :さしす というテーブルにおいて、同じKeyを持つ Value1の値を結合させ、 Key:Value A:あいうかきく B:あいうさしす というように出力させたいと考えています。 この時のSQL文をどう書いたら良いか分からず 悩んでいます。 行→列変換はそれなりに検索ヒットするものの、 同一列→結合して一つに、といったケースが 余り一般的ではないように思いますので、 どなたかにアドバイスを頂ければ幸いです。 宜しくお願い致します。 | ||||
|
投稿日時: 2006-09-26 17:32
何に使うか書いてないからわかんないんだけど、俺なら結果を取り出した後にプログラム側で加工するなぁ。
| ||||
|
投稿日時: 2006-09-26 17:36
返信有り難うございます。 もとねたはデータベースへの問い合わせ結果をCSVではき出しているのですが、一つのキーに対する項目が複数のレコードに分かれて出力されているため、これを一つのレコードにまとめて、XMLに加工する用途で考えています。 やはりプログラム書くのが賢明ですかね。SQLやるには無理があるでしょうか。 | ||||
|
投稿日時: 2006-09-26 17:49
SQLの世界では「結合結果」みたいなデータ構造は好ましくないので
この手の処理はあまり得意ではありません。私も一旦データ出力してから プログラム側で編集するアプローチがよいと思います。 ところで、データベース内のデータは順序を持ちません。 同じグループの順番はどう解決するのでしょうか? A :あいう A :かきく がある場合、「あいうかきく」と「かきくあいう」の場合が考えられます。 細かい事はわかりませんが、単純に文字列比較で並べればよいのですか? | ||||
|
投稿日時: 2006-09-26 17:55
返信ありがとうございます。 SQLの得手不得手が見えない状態でおりましたので、 こうしたアドバイスも非常に参考になります。 ところで、結合は単純に出現順を考えています。 あいう・かきくと出現すれば「あいうかきく」、 かきく・あいうと出現すれば「かきくあいう」 となれば良しと考えています。 concatで結合するようなイメージです。 | ||||
|
投稿日時: 2006-09-26 17:59
RDBによってはユーザ定義の集計関数が作れると思いますが、
お使いのRDBがサポートしていないのであれば、 プログラムでの加工をお勧めします。 | ||||
|
投稿日時: 2006-09-27 11:55
返信有り難うございます。 集計関数はユーザ定義出来る環境に無いので 挫折してしまいました。 ところで、データベースを良く調べてみると、 項目に対してナンバリングされていることが分かりました。 つまり、 Key:Value:No A :あいう:1 A :かきく:2 A :さしす:3 B :あいう:1 B :かきく:2 このナンバーを使えばなんとかならないかなと 思ったりしているのですが、SQLでSELECTで 取り出す内容毎にWHERE定義を行う事は 出来ないのでしょうか。これができると、 表示結果としては、 Keyx:xのNo1のValue:xのNo2のValue.... と出来るような気がするのですが、SQLで やるにはJOINが一般的でしょうか? | ||||
|
投稿日時: 2006-09-27 14:32
どう見ても普通のSQLではできないので、素直にプログラムを書いたほうが早い。
それから、
これを読むとテーブル設計が間違っているような気がする。本来、一レコードになる べきものが、複数のレコードに分解されてしまっているのでは? |