nataraj: (Real Me)
[personal profile] nataraj
Написал тут небольшой SQL запросик. Написав охренел от написанного. Интересно сможет ли кто-нибудть кроме меня и постгресса это прочитать? А понять?
   select Digest.ITEM_ID              as DIGEST,
            Digest.MESSAGE_FORMAT       as FORMAT,
            SubscriptionLink.ACTIVE     as SUBSCRIPTION,
            Digest_VariantLink.ACTIVE   as VARIANT,
            Digest_TemplateLink.ACTIVE  as TEMPLATE,
            AuthorTable.ITEM_ID         as ADDRESSEE
       from Digest,
            Item_Link as SubscriptionLink,
            Item_Link as Digest_VariantLink,
            Item_Link as Digest_TemplateLink,
            Item_Link as AddresseeLink,
            Item as AuthorTable
      where Digest.PERIOD=?
        and SubscriptionLink.PASSIVE=Digest.ITEM_ID
        and SubscriptionLink.LINKTYPE_ID='SUBSCRIPTION'
        and Digest_VariantLink.PASSIVE=Digest.ITEM_ID
        and Digest_VariantLink.LINKTYPE_ID='DIGEST_VARIANT'
        and Digest_TemplateLink.PASSIVE=Digest.ITEM_ID
        and Digest_TemplateLink.LINKTYPE_ID='DIGEST_TEMPLATE'
        and AddresseeLink.PASSIVE=Digest.ITEM_ID
        and AddresseeLink.LINKTYPE_ID='ADDRESSEE'
        and AuthorTable.ITEM_ID=AddresseeLink.ACTIVE
        and AuthorTable.TYPE_ID='AUTHOR')
    union
    (select Digest.ITEM_ID              as DIGEST,
            Digest.MESSAGE_FORMAT       as FORMAT,
            SubscriptionLink.ACTIVE     as SUBSCRIPTION,
            Digest_VariantLink.ACTIVE   as VARIANT,
            Digest_TemplateLink.ACTIVE  as TEMPLATE,
            AuthorTable.ITEM_ID         as ADDRESSEE
       from Digest,
            Item_Link as SubscriptionLink,
            Item_Link as Digest_VariantLink,
            Item_Link as Digest_TemplateLink,
            Item_Link as AddresseeLink,
            Item as UserGroupTable,
            Item_Rel as Included_User_GroupLink,
            Item as AuthorTable
      where Digest.PERIOD=?
        and SubscriptionLink.PASSIVE=Digest.ITEM_ID
        and SubscriptionLink.LINKTYPE_ID='SUBSCRIPTION'
        and Digest_VariantLink.PASSIVE=Digest.ITEM_ID
        and Digest_VariantLink.LINKTYPE_ID='DIGEST_VARIANT'
        and Digest_TemplateLink.PASSIVE=Digest.ITEM_ID
        and Digest_TemplateLink.LINKTYPE_ID='DIGEST_TEMPLATE'
        and AddresseeLink.PASSIVE=Digest.ITEM_ID
        and AddresseeLink.LINKTYPE_ID='ADDRESSEE'
        and UserGroupTable.ITEM_ID=AddresseeLink.ACTIVE
        and UserGroupTable.TYPE_ID='USER_GROUP'
        and Included_User_GroupLink.PASSIVE=UserGroupTable.ITEM_ID
        and Included_User_GroupLink.LINKTYPE_ID='INCLUDED_USER_GROUP'
        and AuthorTable.ITEM_ID=Included_User_GroupLink.ACTIVE
        and AuthorTable.TYPE_ID='AUTHOR'
     )
      order by SUBSCRIPTION,VARIANT,TEMPLATE,FORMAT

Date: 2006-12-29 05:58 am (UTC)
From: [identity profile] beldmit.livejournal.com
Ты по-прежнему считаешь, что переводить подписку на связи стоило?

Date: 2006-12-29 09:27 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Может быть и стоило. Но только если не писать SQL руками. В смысле, если бы эту задачу можно было бы решить с помощью графового языка запросов (AKA унифильтры), то запрос получился бы комактный и понятный. А во что он там потом оттранслируется для конкретного SQL-бэкэнда, было бы не интересно.

Date: 2006-12-29 04:23 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Ну данный конкретный запрос писан один раз, покладен в cmwmaild и забыт как страшный сон. Не думаю что его развесистость особенно скажется на общей производительности сервера. Зато теперь можно будет с рассылкой нормально работать прямо из шаблонов, без спец. скриптов...

;-)))))

Date: 2006-12-29 04:20 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Ну как сказать... пока я его рисовал, подобные мысли ко мне приходили. А так же мысли о том что если бы у коммуниверной системы данных был бы нормальный API, или язык запросов, то все было бы гораздо проще.
Ведь потребность то простая. Выбрать некоторые объекты и их конкретных соседей по конкретным связям. Ничего нездравого в таком желании разработчика я не вижу ;-)

Я этим запросом (дописав к нему еще с десяток строк) успешно послал себе рассылку. Теперь буду работать над тем чтобы об этом еще в лог писалось, и чтобы по заголовкам можно было понять кто кого и как далеко послал...

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 20th, 2026 05:13 pm
Powered by Dreamwidth Studios