avshap: (Default)
avshap ([personal profile] avshap) wrote2006-07-18 04:23 pm

SQL 2

Чего-то туплю. Больше десятка таблиц с тарифами операторов. Нужен хитровынутый запрос чтобы из этого получить временную таблицу (или представлениe [VIEW]) с ценами всех операторов для каждого телефонного кода. Попытка решить задачу в лоб приводит только к тому, что Postgres надолго задумывается. JOIN тут явно не пройдёт (неохота мне "пирамиду" временных таблиц делать). В сторону чего копать?

[identity profile] ping-ving.livejournal.com 2006-07-18 10:49 am (UTC)(link)
Если постгрес умеет union all - то и используй.
Однотипные запросы из таблиц с данными операторов, и union их.

[identity profile] avshap.livejournal.com 2006-07-18 10:57 am (UTC)(link)
Уточню. В результате требуется таблица вида Префикс| Тариф оператора 1| Тариф оператора 2| ... |Тариф оператора N|

[identity profile] boa-constrictr.livejournal.com 2006-07-18 11:03 am (UTC)(link)
create table forget_about_normal_forms as select name, tarif as tarif1, null as tarif2, null as tarif3 from oper1
union all
select name, null as tarif1, tarif as tarif2, null as tarif3 from oper2
union all
select name, null as tarif1, null as tarif2, tarif as tarif3 from oper3

возможно синтаксис малость другой, но несущественно

[identity profile] ping-ving.livejournal.com 2006-07-18 11:09 am (UTC)(link)
Чистое коддохульство.
Хотя бля отчёта проканает.

[identity profile] avshap.livejournal.com 2006-07-18 11:14 am (UTC)(link)
Это типа для выяснения, кто куда дешевле будет...

[identity profile] sergey-ilyin.livejournal.com 2006-07-18 11:24 am (UTC)(link)
Только вот из таблицы вида

"префикс | оператор | тариф"

это выясняется запросом, похожим на ;) "select префикс, min(тариф) group by префикс".

А из этого монстра как?

[identity profile] boa-constrictr.livejournal.com 2006-07-18 11:16 am (UTC)(link)
Чистое коддохульство.
Хотя бля отчёта проканает.

Умри, лучше не скажешь.