昔のプログラムの修正でとても困っています。
内容は以下のようなことなのですが、お知恵をお貸しいただけないでしょうか。
PostgreSQLに2つのテーブルAとBがあります。
Aのテーブルは、idとnameのカラムを持っており以下のような内容です。
CREATE TABLE A
(
id integer NOT NULL,
"name" text
)
テーブルA
|id|name|
|1|あああ|
|2|いいい|
|3|ううう|
|4|えええ|
|5|おおお|
|64|最大値|
idの最大値は64です。
Bのテーブルは、idとAのテーブルのidを計算をした値のカラムadを持っており以下のような内容です。
CREATE TABLE B
(
id integer NOT NULL,
bit bigint
)
テーブルB
|id|bit|
|1| 1 |
|2| 3 |
|3| 15 |
|4| 10 |
|5| 4 |
このBのテーブルにbitに入っている値ですが、Aのテーブルのidをbit?2進数?にしたものを計算して格納されています。
|id|bit| ← Aのテーブルのidを計算したもの
|1| 1 | ← あああ
|2| 3 | ← あああ、いいい
|3| 15 | ← あああ、いいい、ううう、えええ
|4| 10 | ← いいい、えええ
|5| 4 | ← ううう
Aのテーブルのidのごとの変換する値
|id|name|
|1|あああ| ← 1
|2|いいい| ← 2
|3|ううう| ← 4
|4|えええ| ← 8
|5|おおお| ← 16
やりたいことは、SQL文でAとBのテーブルを結合し、Bのテーブルのidが3の物を検索しAのテーブルのnameを求めたいのですが、何をどうしていいのかすらわかりません。
欲しい結果は、テーブルAのname が、
あああ、いいい、ううう、えええ
と、取得したいです。
SQL1文でやることはできませんでしょうか。
追記です。
テーブルAのidを64にするとpostgresqlの最大値を超えてしまうかとおもいます。
計算できれば計算したいですが、無理な場合は64の時は ”桁あふれ” などの
文字列を返したいです。
ご教授いただけると幸いです。
回答3件
あなたの回答
tips
プレビュー