Я использую 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 как о еще двух столбцах. Структура данных такая, потому что она постоянно меняется. Я не проектировал это, я просто должен идти с этим.
Я не могу понять SQL-запрос, чтобы дать мне что-то вроде следующего (самое главное, для некоторой строки я могу получить доступ к столбцам k1 и k2 по некоторому имени):
data
id | c1 | c2 | k1 | k2
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
Проблема, с которой я продолжаю сталкиваться, заключается в том, что если я создаю псевдоним для таблиц, то результат sql будет содержать два «ключевых» столбца из таблицы словаря, то есть я не могу контролировать, к какому столбцу я обращаюсь из двух, но если я создаю псевдоним для строк, тогда я не могу контролировать, на какие таблицы ссылаются в инструкции sql.
Я думаю, что исправление состоит в том, чтобы связать два столбца:
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.
k0...kN
столбцов возникают динамические (или одноразовые) запросы... - person   schedule 29.06.2012