私はpyodbcとpostgresを使用しています。
複数の列にエイリアスを付けることはできますか?
これが私の問題の説明です:
データ構造:
data
id | c1 | c2
-------------
1 | 11 | 12
2 | 21 | 22
表記:cは列用です
dictionary
id | key | value
----------------
1 | k1 | v11
1 | k2 | v12
2 | k1 | v21
2 | k2 | v22
表記:kはキー、vは値
k1とk2はさらに2つの列と考えることができます。データ構造は常に変化しているため、このようになっています。私はそれを設計しませんでした、私はそれと一緒に行かなければなりません。
次のようなSQLクエリを理解できません(最も重要なのは、一部の行で、k1列とk2列に名前でアクセスできることです)。
data
id | c1 | c2 | k1 | k2
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
私が遭遇し続ける問題は、テーブルにエイリアスを付けると、SQL結果にディクショナリテーブルの2つの「キー」列が含まれることです。つまり、2つの列のどちらにアクセスするかを制御できませんが、行にエイリアスを付けると、次に、SQLステートメント内で参照されているテーブルを制御できません。
私が考えている修正は、2つの列のエイリアスを作成することです。
SELECT * FROM data
FULL JOIN dictionary AS a1,a2,a3
ON data.id = a1
FULL JOIN dictionary AS a4,a5,a6
ON data.id = a4
WHERE a2 = k1 and a5 = k2
表記:aはエイリアス用です
この結果は理論的には次のようになります
data
id | c1 | c2 | a3 | a6
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
すべてのaは技術的にはここにありますが、私が興味を持っているのは3と6です。