ุจูŠูˆุช FIAS ููŠ PostgreSQL

ุงู„ู…ู‚ุงู„ ุงู„ุณุงุจู‚ ุงู„ุฐูŠ ูŠุตู ุนู†ุงูˆูŠู† ูˆูˆุธุงุฆู FIAS ู„ู„ุนู…ู„ ู…ุนู‡ู… ููŠ ุจูŠุฆุฉ PostgreSQL ุฃุซุงุฑ ุงู„ุงู‡ุชู…ุงู… ุจูŠู† ุฌุฒุก ุตุบูŠุฑ ู…ู† ุงู„ู‚ุฑุงุก.

ู„ุฐู„ูƒ ุŒ ู…ู† ุงู„ู…ู†ุทู‚ูŠ ูˆุตู ุงู„ูˆุธุงุฆู ุงู„ู…ู…ุงุซู„ุฉ ููŠ PL / pgSQL ู„ู„ุนู…ู„ ู…ุน ู‚ุงุฆู…ุฉ ู…ู†ุงุฒู„ FIAS ุงู„ุชูŠ ุชู… ุชุญู…ูŠู„ู‡ุง ููŠ ู‚ุงุนุฏุฉ ุจูŠุงู†ุงุช ุชุดุบู„ PostgreSQL.


ูŠู‚ุฏู… ุงู„ู†ุตู ุงู„ุฃูˆู„ ู…ู† ุงู„ู…ู‚ุงู„ุฉ ุชุนู„ูŠู‚ุงุช ุนู„ู‰ ุชู†ููŠุฐ ุงู„ูˆุธุงุฆู. ููŠ ุงู„ุซุงู†ูŠุฉ ุŒ ุฑู…ูˆุฒ ู…ุตุฏุฑ ุงู„ูˆุธุงุฆู ุŒ ูˆูƒุฐู„ูƒ ุงู„ู†ุตูˆุต ู„ุฅู†ุดุงุก ุฌุฏูˆู„ ุจุณุฌู„ุงุช ู…ู†ุฒู„ FIAS ุŒ ูˆูƒุฐู„ูƒ ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช ููŠ ู‡ุฐุง ุงู„ุฌุฏูˆู„ ู…ู† ู…ู„ู ุจุชู†ุณูŠู‚ CSV. ุจุงู„ู†ุณุจุฉ ู„ู„ู‚ุฑุงุก ุงู„ู…ู‡ุชู…ูŠู† ูู‚ุท ุจุงู„ู†ุตูˆุต ุงู„ู…ุตุฏุฑ ุŒ ู†ู‚ุชุฑุญ ุงู„ู…ุชุงุจุนุฉ ุงู„ููˆุฑูŠุฉ ู„ู„ู…ู„ุญู‚.

ุชุฑุชุจุท ู‡ุฐู‡ ุงู„ู…ู‚ุงู„ุฉ ุงุฑุชุจุงุทู‹ุง ูˆุซูŠู‚ู‹ุง ุจู…ูˆุงุฏ ุณู„ุณู„ุฉ ุงู„ู…ู‚ุงู„ุงุช "ุนู†ุงูˆูŠู† FIAS ููŠ ุจูŠุฆุฉ PostgreSQL" ( ุงู„ุจุฏุงูŠุฉ ูˆุงู„ุงุณุชู…ุฑุงุฑ 1 ูˆุงู„ุงุณุชู…ุฑุงุฑ 2 ูˆุงู„ู†ู‡ุงูŠุฉ ).

ุดุฌุฑุฉ ุงู„ุนุงุฆู„ุฉ ููŠ ุงู„ู…ู†ุฒู„


ู„ู†ุจุฏุฃ ุจู…ุซุงู„.

ุณูŠุคุฏูŠ ุงุณุชุฏุนุงุก ุงู„ูˆุธูŠูุฉ f stf_Houses_AddressObjectTree ('42301ab8-9ead-4f8e-8281-e64f2769a254') ุฅู„ู‰ ู‚ุงุฆู…ุฉ ุงู„ุฅุฏุฎุงู„ุงุช ุงู„ุชุงู„ูŠุฉ.


ุงู„ุฌุฏูˆู„ 1. ู†ุชูŠุฌุฉ ุงู„ูˆุธูŠูุฉ.



ุนู†ุฏ ุงู„ูุญุต ุงู„ุฏู‚ูŠู‚ ุŒ ู‚ุฏ ุชู„ุงุญุธ ุฃู† ู…ุนุฑู ุงู„ุนู†ุตุฑ ( HOUSEGUID ) "ุฏ. 1 ุŒ ุจู†ุงูŠุฉ. 2 ุŒ ุต 26 "ุŒ ุชู… ุงุณุชู„ุงู… ุณุชุฉ ุณุฌู„ุงุช ู†ุชูŠุฌุฉ ู„ุฐู„ูƒ:


  • ุซู„ุงุซุฉ ุณุฌู„ุงุช ุฑุฆูŠุณูŠุฉ ู…ุน ุนู†ุงุตุฑ ุชุดูƒู„ ุงู„ุนู†ูˆุงู†: ุญูˆู„ ุงู„ู…ู†ุทู‚ุฉ ูˆุงู„ู…ุฏูŠู†ุฉ ูˆุงู„ุดุงุฑุน ุ›
  • ุซู„ุงุซุฉ ุณุฌู„ุงุช ู„ู‡ุง ุฎุตุงุฆุต ุฑู‚ู… ุงู„ู…ู†ุฒู„: ุฑู‚ู… ุงู„ู…ู†ุฒู„ ูˆุฑู‚ู… ุงู„ู…ุจู†ู‰ ูˆุฑู‚ู… ุงู„ู…ุจู†ู‰.

ุชุญุชูˆูŠ ุงู„ูˆุธูŠูุฉ ุนู„ู‰ ู…ุนู„ู…ุฉ ุงุฎุชูŠุงุฑูŠุฉ ุฃุฎุฑู‰ - ุชุงุฑูŠุฎ ุงู†ุชู‡ุงุก ุตู„ุงุญูŠุฉ ุงู„ุณุฌู„ ( EndDate ) ุŒ ุงู„ุฐูŠ ูŠู…ูƒู†ูƒ ู…ู† ุฎู„ุงู„ู‡ ุนุฑุถ ู†ุณุจ ู„ูŠุณ ูู‚ุท ุงู„ุณุฌู„ ุงู„ุญุงู„ูŠ ุญูˆู„ ุงู„ู…ู†ุฒู„ ุŒ ูˆู„ูƒู† ุฃูŠุถู‹ุง ุงู„ุณุฌู„ุงุช ุงู„ู‚ุฏูŠู…ุฉ ุจุงู„ูุนู„.

ูˆูŠุฑุฏ ุงู„ู†ุต ุงู„ูƒุงู…ู„ ู„ู„ุฏุงู„ุฉ ููŠ ุงู„ู…ู„ุญู‚ ููŠ ู‚ุณู… ุฅู†ุดุงุก ุงู„ูˆุธูŠูุฉ fstf_Houses_AddressObjectTree .


ู…ู† ุงู„ุจุฏุงูŠุฉ


ุฅุฐุง ูƒู†ุช ุชุนุฑู ูƒูŠู ูŠุชู… ุชุฑุชูŠุจ ุทุงูˆู„ุฉ ู…ู†ุฒู„ FIAS ุŒ ููŠู…ูƒู† ุชุฎุทูŠ ู‡ุฐุง ุงู„ู‚ุณู….
ุจูŠูˆุช FIAS ( HOUSES ) ู‡ูŠ ู‚ุงุฆู…ุฉ ูุฑุนูŠุฉ ู„ู‚ุงุฆู…ุฉ ุนู†ุงุตุฑ ุชูˆู„ูŠุฏ ุงู„ุนู†ุงูˆูŠู† ู„ู€ FIAS ( ADDROBJ ). ูŠุดูŠุฑ ูƒู„ ุฅุฏุฎุงู„ ู‚ุงุฆู…ุฉ ู…ู†ุฒู„ ุฅู„ู‰ ุนู†ุตุฑ ุฅู†ุดุงุก ุนู†ูˆุงู† FIAS ุจู‚ูŠู…ุฉ ุญู‚ู„ AOGUID . ู…ู† ุฃุฌู„ ุชุญุฏูŠุฏ ุงู„ุดุงุฑุน ูˆุงู„ู…ูƒุงู† ุงู„ุฐูŠ ูŠู‚ุน ููŠู‡ ุงู„ู…ู†ุฒู„ ุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ุณุฌู„ ุงู„ู…ู‚ุงุจู„ ู„ู‡ ู†ูุณ ู…ุนุฑู ู‚ุงุฆู…ุฉ ADDROBJ ุจูˆุงุณุทุฉ ู‚ูŠู…ุฉ AOGUID ู„ุณุฌู„ HOUSES .


ุนู„ู‰ ุงู„ุฑุบู… ู…ู† ุงู„ุจุณุงุทุฉ ุงู„ุฎุงุฑุฌูŠุฉ ู„ุขู„ูŠุฉ ุงู„ุชูุงุนู„ ุจูŠู† ู‚ุงุฆู…ุฉ ุงู„ู…ู†ุงุฒู„ ูˆู‚ุงุฆู…ุฉ ุงู„ุนู†ุงุตุฑ ุงู„ู…ูƒูˆู†ุฉ ู„ู„ุนู†ุงูˆูŠู† ููŠ ุชูุงุนู„ู‡ุง ุŒ ุฅู„ุง ุฃู† ุงู„ู…ูŠุฒุงุช ุงู„ุชูŠ ุชุนู‚ุฏ ุชู†ููŠุฐ ุงู„ูˆุธุงุฆู ููŠ ุงู„ู…ู†ุงุฒู„ .


ุฃูˆู„ุงู‹ ุŒ ูŠุดูŠุฑ ูƒู„ ุณุฌู„ ู„ู‚ุงุฆู…ุฉ ุงู„ู…ู†ุงุฒู„ ุจูˆุงุณุทุฉ ู…ุนุฑู AOGUID ุฅู„ู‰ ู…ุฌู…ูˆุนุฉ ู…ู† ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุŒ ุฃุญุฏู‡ุง ุฐูˆ ุตู„ุฉ.


ุซุงู†ูŠู‹ุง ุŒ ู‡ู†ุงูƒ ุนุฏุฉ ุฅุฏุฎุงู„ุงุช ููŠ ู‚ุงุฆู…ุฉ FIAS ู„ู‡ุง ู†ูุณ ู…ุฌู…ูˆุนุฉ ุฎุตุงุฆุต ุฑู‚ู… ุงู„ู…ู†ุฒู„: ุฑู‚ู… ุงู„ู…ู†ุฒู„ ุŒ ุฑู‚ู… ุงู„ู…ุจู†ู‰ ุŒ ุฑู‚ู… ุงู„ู…ุจู†ู‰.


ุซุงู„ุซู‹ุง ุŒ ู„ุง ูŠุชู… ุชุณุฌูŠู„ ุณุฌู„ ุงู„ู…ู†ุฒู„ ุฏุงุฆู…ู‹ุง ู…ู† ุณุฌู„ ุดุงุฑุน ุงู„ู‚ุฑูŠุฉ.


ูˆู„ูƒู† ุŒ ุฃูˆู„ ุดูŠุก ุฃูˆู„ุงู‹.

ู„ู…ุฒูŠุฏ ู…ู† ุงู„ู†ุธุฑ ููŠ ุชุฎุฒูŠู† ุงู„ู…ุนู„ูˆู…ุงุช ุญูˆู„ ุงู„ู…ู†ุงุฒู„ ููŠ FIAS ุŒ ูŠูƒููŠ ุฃู† ู†ู‚ุชุตุฑ ุนู„ู‰ 4 ุฌุฏุงูˆู„ (ู…ู„ูุงุช DBF):




  • ADDROBJ - ู‚ุงุฆู…ุฉ ุนู†ุงุตุฑ ุชุดูƒูŠู„ ุงู„ุนู†ูˆุงู† ุ›
  • ู…ู†ุงุฒู„ - ู‚ุงุฆู…ุฉ ุงู„ู…ู†ุงุฒู„.
  • STRSTAT - ุฏู„ูŠู„ ุงู„ุณู…ุงุช ุงู„ู‡ูŠูƒู„ูŠุฉ ุ›
  • ESTSTAT - ุฏู„ูŠู„ ุนู„ุงู…ุงุช ุงู„ู…ู„ูƒูŠุฉ.

ุชู…ุช ู…ู†ุงู‚ุดุฉ ADDROBJ ุจุงู„ุชูุตูŠู„ ููŠ ู…ู†ุดูˆุฑ ุณุงุจู‚ ุจุนู†ูˆุงู† "ุนู†ุงูˆูŠู† FIAS ููŠ PostgreSQL" ุŒ ู„ุฐุง ุณุชุชู… ู…ู†ุงู‚ุดุฉ ู…ูŠุฒุงุชู‡ ู‡ู†ุง ุจู‚ุฏุฑ ู…ุง ู‡ูˆ ุถุฑูˆุฑูŠ ู„ูˆุตู ุฎุตุงุฆุต ุงู„ู…ู†ุงุฒู„.


ุงู„ุฌุฏูˆู„ 2. ุชุงุฑูŠุฎ ุงู„ู…ู†ุฒู„ "ุฅู‚ู„ูŠู… ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ ุŒ ู…ู†ุทู‚ุฉ ุชูŠู…ูŠุฑ ุฏูˆู„ุฌุงู†-ู†ูŠู†ูŠุชุณูƒูŠ ุŒ ุฏูˆุฏูŠู†ูƒุง ุŒ ุฃูˆู„. ุฏูˆุฏูŠู†ุณูƒุงูŠุง ุŒ 1




ูƒู…ุง ูŠุชุจูŠู† ู…ู† ุงู„ุฌุฏูˆู„ ุŒ ุนู„ู‰ ุนูƒุณ ุงู„ูƒุงุฆู†ุงุช ุงู„ุชูŠ ุชุดูƒู„ ุงู„ุนู†ูˆุงู† ุŒ ูุฅู† ุณุฌู„ุงุช ุชุงุฑูŠุฎ ุงู„ู…ู†ุฒู„ ู„ูŠุณ ู„ู‡ุง ุนู„ุงู…ุงุช ุฎุงุตุฉ ุนู„ู‰ ุงู„ุตู„ุฉ. ุงู„ุณุฌู„ ุฐูˆ ุชุงุฑูŠุฎ ุงู†ุชู‡ุงุก ุงู„ูุชุฑุฉ ุงู„ุฃู‚ุฏู… ุŒ ูˆุงู„ุฐูŠ ู‡ูˆ ุฃูƒุจุฑ ู…ู† ุงู„ุชุงุฑูŠุฎ ุงู„ุญุงู„ูŠ ุŒ ุฐูˆ ุตู„ุฉ. ุญุชู‰ ุงู„ุขู† ุŒ ุชู… ุชู…ูŠูŠุฒ ุณุฌู„ุงุช ุงู„ู…ู†ุงุฒู„ ุงู„ุญุงู„ูŠุฉ ุจุชุงุฑูŠุฎ 06.06.2079. ุชุนุชุจุฑ ุฌู…ูŠุน ุงู„ุณุฌู„ุงุช ุงู„ุฃุฎุฑู‰ ุญูˆู„ ุงู„ู…ู†ุฒู„ ุชุงุฑูŠุฎูŠุฉ ุŒ ูˆุชู…ูŠุฒ ุชุงุฑูŠุฎูŠ ุงู„ุจุฏุก ูˆุงู„ุงู†ุชู‡ุงุก ูุชุฑุฉ ุตู„ุฉ ูƒู„ ุณุฌู„.


ู„ุง ุชุญุชูˆูŠ ู‚ุงุฆู…ุฉ ู…ู†ุงุฒู„ FIAS ุนู„ู‰ ู…ุคุดุฑุงุช ู„ู„ุณุฌู„ุงุช ุงู„ุณุงุจู‚ุฉ ูˆุงู„ุชุงู„ูŠุฉ ุญูˆู„ ุงู„ู…ู†ุฒู„. ู„ุฐู„ูƒ ุŒ ูŠุชู… ุชุญุฏูŠุฏ ุชุฑุชูŠุจ ุงู„ุณุฌู„ุงุช ู…ู† ุงู„ุนู…ู‚ ุงู„ูุนู„ูŠ ููŠ ุชุงุฑูŠุฎ ุงู„ู…ู†ุฒู„ ู…ู† ุฎู„ุงู„ ุชุงุฑูŠุฎ ุงู„ุงู†ุชู‡ุงุก ุงู„ู…ุชู†ุงู‚ุต ูˆู…ุง ุจุนุฏู‡ ุชุงุฑูŠุฎ ุจุฏุก ุงู„ูุชุฑุฉ ุŒ ุนู„ู‰ ุงู„ุชูˆุงู„ูŠ EndDate ูˆ StartDate .



SELECT * FROM fias_Houses h WHERE h.HOUSEGUID='2fd64ecd-4b4b-4fc8-bd15-4a4a2f310b21' ORDER BY h.ENDDATE DESC,h.STARTDATE DESC; 

ุงู„ู‚ุงุฑุฆ ุงู„ูŠู‚ุธ ูŠู†ุธุฑ ููŠ ุงู„ุดูƒู„. 1 ุŒ ุฑุจู…ุง ุณุฃู„ุช ู†ูุณูŠ ุงู„ุณุคุงู„: ู„ู…ุงุฐุง ูŠุชู… ุฐูƒุฑ ุงู„ูƒุชุจ ุงู„ู…ุฑุฌุนูŠุฉ ู„ุนู„ุงู…ุงุช ุงู„ู‡ูŠูƒู„ ูˆุงู„ู…ู„ูƒูŠุฉุŸ ุชุณุชุฎุฏู… FIAS ุฃูƒุซุฑ ู…ู† 10 ู…ู† ู‡ุฐุง ุงู„ู†ูˆุน ู…ู† ุงู„ุฃุฏู„ุฉ ุŒ ูู„ู…ุงุฐุง ูŠุชู… ุชู…ูŠูŠุฒ ู‡ุฐูŠู† ุงู„ุงุซู†ูŠู†ุŸ


ุณูˆู ูŠูุงุฌุฆ ุงู„ุฌูˆุงุจ ุงู„ูƒุซูŠุฑูŠู† - ู…ู† ูˆุฌู‡ุฉ ู†ุธุฑ "ู…ู†ุทู‚ FIAS" ุŒ ู„ู… ูŠุชู… ุชุญุฏูŠุฏ ุนู†ูˆุงู† ุงู„ู…ู†ุฒู„ ุจุงู„ูƒุงู…ู„ ู…ู† ุฎู„ุงู„ ุนู†ูˆุงู† ุงู„ุดุงุฑุน ูˆุงู„ู…ู†ุฒู„ ูˆุงู„ู…ุจู†ู‰ ูˆุฃุฑู‚ุงู… ุงู„ู…ุจุงู†ูŠ. ุชู… ุงุณุชุฎุฏุงู… ู…ุตุทู„ุญ "ู…ู†ุทู‚ FIAS" ููŠ ุฅุฌุงุจุฉ ู…ูˆุธู ููŠ ู…ุตู„ุญุฉ ุงู„ุถุฑุงุฆุจ ุงู„ููŠุฏุฑุงู„ูŠุฉ ุนู„ู‰ ุณุคุงู„ูŠ ู„ู…ุงุฐุง ูŠูˆุฌุฏ ููŠ ู‚ุงุฆู…ุฉ ุงู„ู…ู†ุงุฒู„ ููŠ ุฅู‚ู„ูŠู… ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ ุฃูƒุซุฑ ู…ู† 250 ุนู†ูˆุงู† ู…ู†ุงุฒู„ ู…ู‚ุชุฑู†ุฉ. ู‚ุงู„ุช ู†ูุณ ุงู„ุฅุฌุงุจุฉ ุฃู† ุชูุฑุฏ ุงู„ุณุฌู„ ูŠุชู… ุชูˆููŠุฑู‡ ู…ู† ุฎู„ุงู„ ู‚ูŠู… AOGUID ูˆ HOUSENUM ูˆ BUILDNUM ูˆ STRUCNUM ูˆ STRSTATUS ูˆ ESTSTATUS.





ูˆุจุนุจุงุฑุฉ ุฃุฎุฑู‰ ุŒ ู„ู„ุนุซูˆุฑ ุนู„ู‰ ุดูŠุก ู…ุง ุŒ ู„ุง ูŠูƒููŠ ู…ุนุฑูุฉ ุงู„ู…ู†ุทู‚ุฉ ุฃูˆ ุงู„ุดุงุฑุน ุฃูˆ ุฑู‚ู… ุงู„ู…ู†ุฒู„. ูŠุฌุจ ุฃู† ุชุนุฑู ุฃูŠุถู‹ุง:


  • "ุงู„ุญูŠุงุฒุฉ" ุฃูˆ "ู…ู„ูƒูŠุฉ ุงู„ู…ู†ุฒู„" ุ›
  • ุญุงู„ุฉ ู‡ุฐุง ุงู„ูƒุงุฆู† ู…ุญุฏุฏุฉ ุฃูˆ ุบูŠุฑ ู…ุญุฏุฏุฉ ุ›
  • ุงู„ุฎ.



ู‡ุฐู‡ ู‡ูŠ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุชูŠ ุชุจุฏูˆ ุจู‡ุง ุนูŠู†ุฉ ู…ู† ุงู„ู‚ุงุฆู…ุฉ ุงู„ุนุงู…ุฉ ู„ู…ู†ุงุฒู„ FIAS ุฐุงุช ุงู„ุนู†ุงูˆูŠู† ุงู„ู…ูƒุฑุฑุฉ.
ุญู‚ูŠู‚ุฉ ุฃู† ูƒุงุฆู†ุงุช ู…ุฎุชู„ูุฉ ู„ู‡ุง ู†ูุณ ุงู„ุนู†ูˆุงู† ู„ูŠุณุช ู…ูุงุฌุฆุฉ. ุงู„ู…ุจู†ู‰ ูˆุงู„ุฃุฑุถ ุงู„ุชูŠ ุชุญุชู‡ ุ› ู…ู†ุฒู„ ุŒ ู…ุฑุขุจ ุŒ ุญู…ุงู… ู„ู…ุงู„ูƒ ูˆุงุญุฏ. ูƒู„ู‡ู… ู„ุฏูŠู‡ู… ู†ูุณ ุงู„ุนู†ูˆุงู†. ู„ูƒู† FIAS ู‡ูˆ ุณุฌู„ ุงู„ุนู†ูˆุงู† ุŒ ุฃูŠ ู‚ุงุฆู…ุฉ ุงู„ุนู†ุงูˆูŠู†. ู„ุฐู„ูƒ ุŒ ู…ู† ุงู„ุทุจูŠุนูŠ ุฃู† ู†ุชูˆู‚ุน ุฃู† ุชูƒูˆู† ุงู„ุนู†ุงูˆูŠู† ูุฑูŠุฏุฉ ู…ู† ู†ูˆุนู‡ุง ุŒ ูˆู„ูŠุณ ุงู„ู…ุจุงู†ูŠ ูˆุงู„ู‡ูŠุงูƒู„ ูˆุงู„ู‡ูŠุงูƒู„.


ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุจุฏุฃุช ู‚ุงุฆู…ุฉ ู…ู†ุงุฒู„ FIAS ู…ู† ู‚ุงุฆู…ุฉ ุนู†ุงูˆูŠู† ุงู„ู…ู†ุงุฒู„ ููŠ ุงู„ุชุทูˆุฑ ู†ุญูˆ ู‚ุงุฆู…ุฉ ุงู„ู…ุจุงู†ูŠ ุงู„ุฃุฑุถูŠุฉ. ูˆู…ุณุชุฎุฏู…ูŠ FIAS ุจุญุงุฌุฉ ุฅู„ู‰ ุงู„ู†ุธุฑ ููŠ ู‡ุฐุง.


ูŠู…ูƒู† ู„ู„ุฌู…ูŠุน ุงู„ุชุญู‚ู‚ ู…ู† ูˆุฌูˆุฏ ู…ู†ุงุฒู„ ุฐุงุช ุนู†ุงูˆูŠู† ู…ูƒุฑุฑุฉ ู…ู† ุฎู„ุงู„ ุชู†ููŠุฐ ุนุจุงุฑุฉ SELECT ู…ุดุงุจู‡ุฉ ู„ู…ุง ูŠู„ูŠ. ููŠ ุงู„ูˆู‚ุช ู†ูุณู‡ ุŒ ู„ุง ูŠู…ูƒู† ุงุณุชุฎุฏุงู… ุงู„ูˆุธูŠูุฉ fsfn_Houses_TreeActualName ุŒ ู„ุฃู†ู‡ ูŠุชู… ุงุณุชุฎุฏุงู…ู‡ ูู‚ุท ู„ุชู‚ู„ูŠู„ ุนุฏุฏ ุงู„ุฃุนู…ุฏุฉ ููŠ ุงู„ู†ุชูŠุฌุฉ. ู„ูŠุณ ู…ู† ุงู„ุถุฑูˆุฑูŠ ุงุณุชุฎุฏุงู… ุฏู„ูŠู„ูŠ fias_StructureStatus (ุชู†ุงุธุฑูŠ ู„ู€ STRSTAT) ูˆ fias_EstateStatus (ู…ู…ุงุซู„ ู„ู€ ESTSTAT) ุŒ ูŠู…ูƒู† ุฃูŠุถู‹ุง ุชุชุจุน ุงู„ุฃุซุฑ ุงู„ู…ู„ุญูˆุธ ุนู„ู‰ ุฑู…ูˆุฒ ุนู„ุงู…ุงุช ุงู„ุจู†ุงุก ูˆุงู„ุญูŠุงุฒุฉ.




ูƒูˆุฏ ู…ุตุฏุฑ ุงู„ู…ุดุบู„
 SELECT fsfn_Houses_TreeActualName(h.AOGUID,h.HOUSEGUID),h.HOUSEGUID,str.StructureStatusName,est.EstateStatusName FROM fias_Houses h INNER JOIN (SELECT AOGUID,HOUSENUM,BUILDNUM,STRUCNUM,COUNT(*) FROM fias_Houses h WHERE EndDate =TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS') GROUP BY AOGUID,HOUSENUM,BUILDNUM,STRUCNUM HAVING COUNT(*)>1) hg ON h.AOGUID=hg.AOGUID AND h.HOUSENUM=hg.HOUSENUM AND COALESCE(h.BUILDNUM,'')=COALESCE(hg.BUILDNUM,'') AND COALESCE(h.STRUCNUM,'')=COALESCE(hg.STRUCNUM,'') LEFT OUTER JOIN fias_StructureStatus str ON h.STRSTATUS=str.StructureStatusID LEFT OUTER JOIN fias_EstateStatus est ON h.ESTSTATUS=est.EstateStatusID WHERE h.EndDate =TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS') ORDER BY h.AOGUID,h.HOUSENUM,h.BUILDNUM,h.STRUCNUM,h.STRSTATUS,h.ESTSTATUS; 


ูˆุฃุฎูŠุฑู‹ุง ุŒ ู‡ู†ุงูƒ ู…ูŠุฒุฉ ุฃุฎุฑู‰ ู„ู‚ุงุฆู…ุฉ ู…ู†ุฒู„ FIAS. ูŠุญุชูˆูŠ ูƒู„ ุณุฌู„ ู…ู†ุฒู„ ู„ู‡ุฐู‡ ุงู„ู‚ุงุฆู…ุฉ ุนู„ู‰ ุงุฑุชุจุงุท ุจุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุŒ ูˆู‚ุงุฆู…ุชู‡ ู‡ูŠ ุชุณู„ุณู„ ู‡ุฑู…ูŠ ู„ู‡ุฐู‡ ุงู„ุนู†ุงุตุฑ. ููŠ ูƒู„ ู…ุณุชูˆู‰ ู…ู† ู…ุณุชูˆูŠุงุช ุงู„ุชุณู„ุณู„ ุงู„ู‡ุฑู…ูŠ ุชูˆุฌุฏ ุนู†ุงุตุฑ ุชุดูƒู„ ุงู„ุนู†ูˆุงู† ุชู†ุชู…ูŠ ุฅู„ู‰ ุฃู†ูˆุงุน ู…ุฎุชู„ูุฉ. ู„ุฐุง ูุฅู† ุงู„ุนู†ุตุฑ ุงู„ุฌุฐุฑูŠ ู‡ูˆ ุงู„ู…ู†ุทู‚ุฉ (ุฅู‚ู„ูŠู… ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ ููŠ ุญุงู„ุชู†ุง) ุŒ ููŠ ุงู„ู…ุณุชูˆู‰ ุงู„ุชุงู„ูŠ ู‡ูˆ ู…ู†ุทู‚ุฉ ุฃูˆูƒุฑูˆุฌ ู…ุณุชู‚ู„ุฉ ุฃูˆ ู…ู†ุทู‚ุฉ ุฃูˆ ู…ุฏูŠู†ุฉ ุชุงุจุนุฉ ุฅู‚ู„ูŠู…ูŠุฉ. ูˆู‡ูƒุฐุง ุฏูˆุงู„ูŠูƒ. (ู„ู„ุญุตูˆู„ ุนู„ู‰ ุงู„ุชูุงุตูŠู„ ุŒ ุฑุงุฌุน "ุนู†ุงูˆูŠู† FIAS ููŠ PostgreSQL").


ุฑุณู…ูŠู‹ุง ุŒ ูŠุณู…ุญ ู„ูƒ ุงู„ุณุฌู„ ุงู„ู…ู†ุฒู„ูŠ ุจุงู„ุฑุฌูˆุน ุฅู„ู‰ ุนู†ุตุฑ ุงู„ุชุณู„ุณู„ ุงู„ู‡ุฑู…ูŠ ุนู„ู‰ ุฃูŠ ู…ุณุชูˆู‰. ู„ุญุณู† ุงู„ุญุธ ุŒ ู„ู… ุชูƒู† ู‡ู†ุงูƒ ู…ู†ุงุฒู„ ุชุดูŠุฑ ุฅู„ู‰ ู…ู†ุทู‚ุฉ ุฃูˆ ู…ู†ุทู‚ุฉ ุจูŠู† ุจูŠุงู†ุงุช ุฅู‚ู„ูŠู… ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ. ูˆู…ุน ุฐู„ูƒ ุŒ ู„ุง ุชุดูŠุฑ ุฌู…ูŠุน ุงู„ู…ู†ุงุฒู„ ุฅู„ู‰ ุดุงุฑุน ุงู„ู‚ุฑูŠุฉ:


  • 98 ูช ู…ู† ู…ู†ุงุฒู„ FIAS ู…ุฑุชุจุทุฉ ุจุงู„ุดูˆุงุฑุน ููŠ ุงู„ู…ู†ุงุทู‚ ุงู„ู…ุฃู‡ูˆู„ุฉ ุจุงู„ุณูƒุงู† ุ›
  • 1.2 ูช ู…ู† ุงู„ู…ู†ุงุฒู„ - ู…ุน ุงู„ุดูˆุงุฑุน ููŠ ุฌู…ุนูŠุงุช ุงู„ุจุณุชู†ุฉ ุ›
  • 0.3ูช ู…ู† ุงู„ู…ู†ุงุฒู„ ู…ุน ุงู„ู…ุณุชูˆุทู†ุงุช.
  • 0.5ูช ู…ู† ุงู„ู…ู†ุงุฒู„ ู…ุน ุนู†ุงุตุฑ ุฃุฎุฑู‰ ูŠู…ูƒู† ุงู„ุชุนุงู…ู„ ู…ุนู‡ุง.


ุงู„ุชูŠู†. 2.

ู†ุดุฑ ุนู†ุงูˆูŠู† ุงู„ู…ู†ุงุฒู„ ู…ู† ู‚ุจู„ ุงู„ู…ุงู„ูƒูŠู† (FIAS ู…ู‚ุงุจู„ ุงู„ุฎุฑูŠุทุฉ)


ูŠุชู… ูˆุตู ู…ุดูƒู„ุฉ ู‡ู†ุง ุชุคุฏูŠ ุฅู„ู‰ ุชูุณูŠุฑ ุบุงู…ุถ ู„ุดุฌุฑุฉ ุงู„ุนุงุฆู„ุฉ. (ู„ูุช ุงู†ุชุจุงู‡ูŠ ุฅู„ู‰ ู‡ุฐู‡ ุงู„ู…ุดูƒู„ุฉ ุฅูŠุฌูˆุฑ ู„ูŠูˆู†ูŠุฏูˆููŠุชุด ุชูŠู…ูˆุดูŠู†ูƒูˆู ุŒ ุงุฎุชุตุงุตูŠ ู†ุธู… ุงู„ู…ุนู„ูˆู…ุงุช ุงู„ุฌุบุฑุงููŠุฉ ุŒ Aigeo LLC ุŒ ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ).


ูŠูˆุถุญ ู…ุง ุณุจู‚ ูƒูŠู ุชุญุชูˆูŠ ุงู„ุนุฏูŠุฏ ู…ู† ุงู„ุณุฌู„ุงุช ุนู„ู‰ ู†ูุณ ุงู„ุนู†ูˆุงู† ููŠ ุงู„ู…ู†ุฒู„. ู…ุง ูŠู…ูƒู† ุชูุณูŠุฑู‡ ุจุฑุบุจุฉ ู…ูุชุดูŠุฉ ุงู„ุถุฑุงุฆุจ ููŠ ุงู„ุงุญุชูุงุธ ู„ูŠุณ ูู‚ุท ุจุณุฌู„ ู„ู…ู†ุฒู„ ุฎุงุต ุŒ ูˆู„ูƒู† ุฃูŠุถู‹ุง ู„ู„ู…ุจุงู†ูŠ ุงู„ู…ุญูŠุทุฉ: ู…ุฑุขุจ ุŒ ุญุธูŠุฑุฉ ุŒ ุฅู„ุฎ. ูˆู„ูƒู† ู‡ู†ุงูƒ ุฃู…ุซู„ุฉ ุนูƒุณูŠุฉ ุนู†ุฏู…ุง ุชุชุทุงุจู‚ ุงู„ุนุฏูŠุฏ ู…ู† ุงู„ู…ุจุงู†ูŠ (fias_Houses) ู…ุน ู…ุจู†ู‰ ูˆุงุญุฏ (ู…ู†ุฒู„) ุจุฃุฑู‚ุงู… ู…ุฎุชู„ูุฉ ู„ู‡ุฐุง ุงู„ู…ู†ุฒู„.





ุงู„ู‚ ู†ุธุฑุฉ ุนู„ู‰ ู‡ุฐู‡ ุงู„ุตูˆุฑุฉ ุนู„ู‰ ุงู„ูŠุณุงุฑ ุชูˆุฌุฏ ู„ู‚ุทุฉ ู„ู„ุดุงุดุฉ ู…ุน ุฎุฑูŠุทุฉ ู„ู„ู‚ุฑูŠุฉ ุญูŠุซ ุชูˆุฌุฏ ู…ู†ุงุฒู„ ู…ุงู„ูƒูŠู†. ู‡ุฐู‡ ู…ู†ุงุฒู„ ุนุงุฏูŠุฉ ู…ู† ุทุงุจู‚ ูˆุงุญุฏ ู…ุน ู…ุฏุฎู„ูŠู†. ุชุนูŠุด ุนุงุฆู„ุฉ ูˆุงุญุฏุฉ ุนู„ู‰ ุงู„ูŠู…ูŠู† ูˆุฃุฎุฑู‰ ุนู„ู‰ ุงู„ูŠุณุงุฑ. ู„ุง ูŠุฒุงู„ ู…ู† ุงู„ู…ู…ูƒู† ุชุฎูŠู„ู‡ุง ูƒู…ู†ุงุฒู„ ู…ู† ุดู‚ุชูŠู†.


ุงู„ุขู† ุงู†ุธุฑ ุฅู„ู‰ ุงู„ุทุงูˆู„ุฉ ุนู„ู‰ ุงู„ูŠู…ูŠู†. ููŠ ุฐู„ูƒ ุŒ ูŠุชุทุงุจู‚ ูƒู„ ู…ู†ุฒู„ ุชู‚ุฑูŠุจู‹ุง ู…ุน ู…ุงู„ูƒูŠู† ู…ุน 3 ุฅุฏุฎุงู„ุงุช. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ูŠูˆุถุญ ุฌุฏูˆู„ ุจูŠูˆุช FIAS ูƒู„ุง ู…ู† ุนู†ูˆุงู† ุงู„ู…ู†ุฒู„ ุงู„ูุฑุฏูŠ ("ุฏ. 1") ูˆุนู†ุงูˆูŠู† ุฃุฌุฒุงุก ุงู„ู…ู†ุฒู„ ("ุฏ. 1/1" ุŒ "ุฏ. 1/2") ุงู„ุฎุงุตุฉ ุจู…ุงู„ูƒ ูˆุงุญุฏ.


ูƒูŠู ูŠุนู…ู„


ุชุญุชูˆูŠ ุงู„ูˆุธูŠูุฉ fstf_Houses_AddressObjectTree ุนู„ู‰ ู†ุณุฎุชูŠู†: ู…ุน ุฃุฑุจุนุฉ ุฃูˆ ู…ุน ู…ุนู„ู…ุชูŠู†. ููŠ ุฅุตุฏุงุฑ ุงู„ูˆุธูŠูุฉ ู…ุน ู…ุนู„ู…ุชูŠู† ุŒ ูŠุชู… ุฅุฑุณุงู„ ู…ุนุฑู ุงู„ู…ู†ุฒู„ ( HouseGUID ) ูˆุชุงุฑูŠุฎ ุงู†ุชู‡ุงุก ุตู„ุงุญูŠุฉ ุงู„ุณุฌู„ (EndDate ). ูŠุชุทู„ุจ ุงู„ุฅุตุฏุงุฑ ุงู„ุฐูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ุฃุฑุจุน ู…ุนู„ู…ุงุช ุฃูŠุถู‹ุง ู…ุนุฑูู‹ุง ู„ุนู†ุตุฑ ุฅู†ุดุงุก ุงู„ุนู†ูˆุงู† ( AOGUID ) ูˆุงู„ุญุงู„ุฉ ุงู„ุญุงู„ูŠุฉ ( CurrStatus ).




ูƒูˆุฏ ู…ุตุฏุฑ ุงู„ู…ุดุบู„
 SELECT INTO v_AOGUID,v_CurrStatus h.AOGUID,CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE ao.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE ao.aoguid = iao.aoguid) ELSE 0 END FROM fias_Houses h INNER JOIN fias_AddressObjects ao ON h.AOGUID=ao.AOGUID WHERE h.HOUSEGUID=a_HOUSEGUID AND h.ENDDATE= COALESCE(a_ENDDATE, TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS')) ORDER BY h.ENDDATE DESC; 


ุชุญุณุจ ุฏุงู„ุฉ ุฐุงุช ู…ุนู„ู…ุงุช ุฃู‚ู„ ู‚ูŠู… ุงู„ู…ุนู„ู…ุงุช ุงู„ู…ูู‚ูˆุฏุฉ ูˆุชุณุชุฏุนูŠ ุฏุงู„ุฉ ุฐุงุช ุนุฏุฏ ูƒุจูŠุฑ ู…ู† ุงู„ู…ุนู„ู…ุงุช. ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ูŠุชู… ุงุณุชุฎุฑุงุฌ ู…ุนุฑู ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุจุจุณุงุทุฉ ู…ู† ุงู„ุญู‚ู„ ุงู„ู…ู‚ุงุจู„ ู„ุฌุฏูˆู„ ุงู„ู…ู†ุฒู„ (f ias_Houses ). ูˆุชุญุณุจ ู‚ูŠู…ุฉ ุงู„ูˆุถุน ุงู„ุญุงู„ูŠ ( CurrStatus ) ูˆูู‚ุง ู„ู„ู‚ูˆุงุนุฏ ุงู„ุชุงู„ูŠุฉ:


  • ุฅุฐุง ู„ู… ูŠูƒู† ุฃูŠ ู…ู† ุณุฌู„ุงุช ุงู„ู…ุญููˆุธุงุช ู„ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ูŠุญุชูˆูŠ ุนู„ู‰ 0 ููŠ ุญู‚ู„ CurrStatus ุŒ ููŠุชู… ุชุนูŠูŠู† ู…ุชุบูŠุฑ v_CurrStatus ู„ู‚ูŠู…ุฉ ุงู„ุญู‚ู„ ุงู„ู‚ุตูˆู‰ ู„ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ู‡ุฐุง ุ›
  • ูˆุฅู„ุง ุŒ ูŠุชู… ุชุนูŠูŠู† ุงู„ู‚ูŠู…ุฉ 0 ู‡ุฐุง ุงู„ู…ุชุบูŠุฑ.

ุชู‚ูˆู… ุฏุงู„ุฉ ุฐุงุช ุนุฏุฏ ูƒุจูŠุฑ ู…ู† ุงู„ู…ุนู„ู…ุงุช ุฃูˆู„ุงู‹ ุจุงุณุชุฏุนุงุก ุงู„ูˆุธูŠูุฉ fstf_AddressObjects_AddressObjectTree ุŒ ูˆุงู„ุชูŠ ุชู‚ูˆู… ุจุฅุฑุฌุงุน ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุงู„ุฃุตู„ ู„ู„ู…ู†ุฒู„. ูŠู…ูƒู†ูƒ ู‚ุฑุงุกุฉ ุงู„ู…ุฒูŠุฏ ุญูˆู„ ูˆุธูŠูุฉ fstf_AddressObjects_AddressObjectTree ููŠ ู‚ุณู… ุงู„ู†ุณุจ ู„ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ููŠ ู…ุณุชู†ุฏ FIAS ุงู„ุนู†ุงูˆูŠู† ููŠ PostgreSQL

.

ุซู… ูŠุชู… ุงุณุชูƒู…ุงู„ ุงู„ุฅุฏุฎุงู„ุงุช ุญูˆู„ ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุจุฅุฏุฎุงู„ุงุช ุญูˆู„ ุฃุฑู‚ุงู… ุงู„ู…ู†ุฒู„ ูˆุงู„ู…ุจู†ู‰ ูˆุงู„ู‡ูŠูƒู„ (ุงู†ุธุฑ ุงู„ุฌุฏูˆู„ 1) ุŒ ูˆุงู„ุชูŠ ูŠุชู… ุฅู†ุดุงุคู‡ุง ู„ูƒู„ ุญู‚ู„ ุบูŠุฑ ูุงุฑุบ ุญูˆู„ ุนุฏุฏ ุงู„ู…ู†ุฒู„ ูˆุงู„ู…ุจู†ู‰ ูˆุงู„ู‡ูŠูƒู„.


ู…ู† ุฃุฌู„ ุฃู† ูŠูƒูˆู† ู„ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ู…ุฎุฑุฌุงุช ู†ูุณ ุงู„ุจู†ูŠุฉ ูˆู„ูŠุณ ุจุฏูˆู† ุฌุฒุก ู…ู† ุงู„ุงู†ุจู‡ุงุฑ ุŒ ูŠุชู… ุฅู†ุดุงุก ู‚ูŠู… ู…ุณุชูˆู‰ ุฑู…ุฒ ุงู„ุญู‚ูˆู„ ( AOLevel ) ูˆุงู„ุญุงู„ุฉ ุงู„ุญุงู„ูŠุฉ ( CurrStatus ) ูˆุญุงู„ุฉ ุงู„ู…ู„ุงุกู…ุฉ ( ActStatus ) ุจุดูƒู„ ู…ุตุทู†ุน ููŠ ู†ุต ุงู„ูˆุธูŠูุฉ.


ูŠุชู… ุฏุงุฆู…ู‹ุง ุชุนูŠูŠู† ุฑู…ุฒ ู…ุณุชูˆู‰ ุงู„ู…ู†ุฒู„ (ุงู„ู…ุจู†ู‰ ูˆุงู„ู‡ูŠูƒู„) ุฅู„ู‰ 8 ุŒ ุฑุงุฌุน ุงู„ูƒุชุงุจ ุงู„ู…ุฑุฌุนูŠ "ู…ุณุชูˆูŠุงุช ุงู„ูƒุงุฆู†ุงุช ุงู„ู‚ุงุจู„ุฉ ู„ู„ุนู†ูˆู†ุฉ" ู…ู† ู…ุนู„ูˆู…ุงุช ู…ุนู„ูˆู…ุงุช FIAS ุญูˆู„ ุชูƒูˆูŠู† ุงู„ู…ุนู„ูˆู…ุงุช ).


ูŠุชู… ุชุนูŠูŠู† ุญุงู„ุฉ ุงู„ุตู„ุฉ ุฅู„ู‰ 1 ุฅุฐุง ูƒุงู† ุชุงุฑูŠุฎ ุงู†ุชู‡ุงุก ุตู„ุงุญูŠุฉ ุงู„ุณุฌู„ ( EndDate ) ู‡ูˆ 06.06.2079 ูˆ 0 ุฎู„ุงู ุฐู„ูƒ.


ุชูƒูˆู† ู‚ูŠู… ุญู‚ู„ CurrStatus ุฃูƒุซุฑ ุชุนู‚ูŠุฏู‹ุง. ุจุงุณุชุฎุฏุงู… ู‚ูŠู…ู‡ุง ุŒ ูŠุชู… ุญู„ ู…ู‡ู…ุชูŠู† ููŠ ูˆู‚ุช ูˆุงุญุฏ: ูŠุชู… ุชุนูŠูŠู† ู…ุนุฑู ูƒู„ ุฅุตุฏุงุฑ ู…ู† ุงู„ุณุฌู„ ุญูˆู„ ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ูˆูŠุชู… ุชุนูŠูŠู† ุนู„ุงู…ุฉ ุตู„ุฉ ุงู„ุณุฌู„. ู„ุฐู„ูƒ ุŒ ูŠุญุชูˆูŠ ุขุฎุฑ ุณุฌู„ ุญุงู„ูŠ ุญูˆู„ ุนู†ุตุฑ ุนู„ู‰ ู‚ูŠู…ุฉ 0 ููŠ ู‡ุฐุง ุงู„ุญู‚ู„ ุŒ ูˆูŠุชู… ุชุฑู‚ูŠู… ุฌู…ูŠุน ุงู„ุณุฌู„ุงุช ุงู„ุชุงุฑูŠุฎูŠุฉ ุจุชุฑุชูŠุจ ุงู„ู…ุธู‡ุฑ - "1" ู‡ูˆ ุฃูˆู„ ุณุฌู„ ุŒ ูŠู„ูŠู‡ ููŠ ุงู„ูˆู‚ุช - "2" ุŒ ุฅู„ุฎ. ูŠุชู… ูˆุตู ุชุฑุชูŠุจ ุชุนูŠูŠู† ุงู„ู‚ูŠู… ู„ุญู‚ู„ CurrStatus ุจู…ุฒูŠุฏ ู…ู† ุงู„ุชูุงุตูŠู„ ููŠ ุงู„ู…ู†ุดูˆุฑ FIAS Addresses ููŠ PostgreSQL .




ุนู†ูˆุงู† ุงู„ู…ูุณุฏ
 SELECT h.AOGUID, h.HOUSEGUID, h.HOUSENUM, h.BUILDNUM, h.STRUCNUM, h.ENDDATE, CASE WHEN COALESCE(h.ENDDATE, TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS')) =TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS') THEN 0 ELSE RANK() OVER (PARTITION BY h.AOGUID, h.HOUSEGUID ORDER BY h.ENDDATE ASC) END AS HouseCurrStatus, CASE WHEN COALESCE (h.ENDDATE, TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS')) =TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS') THEN 1 ELSE 0 END AS HouseActStatus FROM fias_Houses h INNER JOIN fias_AddressObjects ao ON h.AOGUID=ao.AOGUID WHERE h.AOGUID=a_AOGUID AND h.HOUSEGUID=a_HOUSEGUID AND h.ENDDATE= COALESCE(a_ENDDATE, TO_TIMESTAMP('2079-06-06 00:00:00','YYYY-MM-DD HH24:MI:SS')) ORDER BY h.ENDDATE DESC; 


ุนู†ูˆุงู† ุงู„ู…ู†ุฒู„ ุจุงู„ูƒุงู…ู„


ุชุชู…ุซู„ ุงู„ููƒุฑุฉ ุงู„ุฑุฆูŠุณูŠุฉ ู„ู„ุฏุงู„ุฉ fsfn_Houses_TreeActualName ููŠ ุฅุฑุฌุงุน ุฑู‚ู… ุงู„ู…ู†ุฒู„ ุงู„ู…ุชุตู„ ููŠ ุณุทุฑ ูˆุงุญุฏ ุฅู„ู‰ ุฌุงู†ุจ ุฃุณู…ุงุก ุฌู…ูŠุน ุฃุณู„ุงูู‡ - ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู†.


ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุฏุน ุฏุงู„ุฉ ุดุฌุฑุฉ ุงู„ุนุงุฆู„ุฉ (fstf_Houses_AddressObjectTree) ุชูุฑุฌุน ู‚ุงุฆู…ุฉ ุงู„ู‚ูŠู… ุงู„ุชุงู„ูŠุฉ.


ุงู„ุฌุฏูˆู„ 4. ู†ุชูŠุฌุฉ ุงู„ูˆุธูŠูุฉ fstf_Houses_AddressObjectTree ('0c0d670f-097c-4e1d-bcac-9e9b22fb1b99')



ุซู… ูŠุฌุจ ุฃู† ูŠูุฑุฌุน fsfn_Houses_TreeActualName ('0c0d670f-097c-4e1d-bcac-9e9b22fb1b99'): " ุงู„ุณูŠุฏ ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ ุŒ 34 ุฃ ุณุงู†ุช ู„ุงุฒูˆ ุŒ ุจู„ุฏ. 6 ุŒ ุต .17 ".


ูŠู…ูƒู† ุชุจุณูŠุท ุงู„ูˆุธูŠูุฉ fsfn_Houses_TreeActualName ูƒูˆุธูŠูุฉ ู…ุฌู…ุนุฉ STRING_AGG ููˆู‚ ู†ุชูŠุฌุฉ ุฏุงู„ุฉ ุชู‚ูˆู… ุจุฅุฑุฌุงุน ุดุฌุฑุฉ ุนุงุฆู„ุฉ ููŠ ุงู„ู…ู†ุฒู„.


ุชุญุชูˆูŠ ุงู„ูˆุธูŠูุฉ ุงู„ู…ุนู†ูŠุฉ ุนู„ู‰ ู…ุนู„ู…ุฉ ุงุฎุชูŠุงุฑูŠุฉ ุฃุฎุฑู‰ - ู…ุฌู…ูˆุนุฉ ู…ู† ุงู„ุฃู‚ู†ุนุฉ ( a_MaskArray ) ุŒ ูˆุงู„ุชูŠ ูŠู…ูƒู†ูƒ ุชุถู…ูŠู†ู‡ุง ููŠ ุงู„ู†ุชูŠุฌุฉ ู„ูŠุณ ูƒู„ ุฃุณู…ุงุก ุงู„ุนู†ุงุตุฑ ุŒ ูˆู„ูƒู† ูู‚ุท ุชู„ูƒ ุงู„ู…ุทู„ูˆุจุฉ.


ุงู„ุฌุฏูˆู„ 5. ู‚ุงุฆู…ุฉ ุฃู‚ู†ุนุฉ ุงู„ูˆุธุงุฆู.



ู†ุณุฎุฉ ู†ุตูŠุฉ ู…ู† ุงู„ุฌุฏูˆู„
ุงู„ู‚ูŠู…ุฉู…ู„ุงุญุธุฉ
{HS}ุงู„ู‚ู†ุงุน - ุฑู‚ู… ุงู„ู…ู†ุฒู„
{BY}ุงู„ู‚ู†ุงุน - ุฑู‚ู… ุงู„ุญุงู„ุฉ
{BG}ุงู„ู‚ู†ุงุน - ุฑู‚ู… ุงู„ู…ุจู†ู‰
{ST}ู‚ู†ุงุน - ุดุงุฑุน
{ZC}ุงู„ู‚ู†ุงุน - ุงู„ุฑู…ุฒ ุงู„ุจุฑูŠุฏูŠ
{DT}ู‚ู†ุงุน - ู…ู†ุทู‚ุฉ ุญุถุฑูŠุฉ
{LP}ู‚ู†ุงุน - ู…ุฏูŠู†ุฉ ุชุงุจุนุฉ
{LM}ู‚ู†ุงุน - ุงู„ู…ุณุชูˆุทู†ุฉ ุงู„ุฑุฆูŠุณูŠุฉ
{TP}ู‚ู†ุงุน - ู…ู†ุทู‚ุฉ ู…ูˆุถูˆุน ุงู„ุงุชุญุงุฏ
{TM}ู‚ู†ุงุน - ู…ูˆุถูˆุน ุงู„ุงุชุญุงุฏ (ุงู„ู…ู†ุทู‚ุฉ)
{CY}ู‚ู†ุงุน - ุงู„ุจู„ุฏ


ุงู†ุธุฑ ุฃูŠุถู‹ุง ู‚ุณู… " ุงู„ุงุณู… ุงู„ูƒุงู…ู„ ู„ุนู†ุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู†" ููŠ ุงู„ู…ู†ุดูˆุฑ "ุนู†ุงูˆูŠู† FIAS ููŠ PostgreSQL ".
ูˆูŠุฑุฏ ู†ุต ุงู„ูˆุธูŠูุฉ ููŠ ู‚ุณู… ุงู„ุชุทุจูŠู‚ " ุฅู†ุดุงุก ูˆุธูŠูุฉ fsfn_Houses_TreeActualName ".

ุจุญุซ ุงู„ุตูุญุฉ ุงู„ุฑุฆูŠุณูŠุฉ FIAS


ุฅู† ุงู„ูˆุธูŠูุฉ fstf_Houses_SearchByName ู…ุฎุตุตุฉ ู„ู„ุจุญุซ ููŠ ุนู†ุงูˆูŠู† ู…ู†ุงุฒู„ FIAS ุญุณุจ ุฃุฑู‚ุงู…ู‡ุง ูˆุฃุณู…ุงุก ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู†. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ูŠู…ูƒู† ุฅุฌุฑุงุก ุงู„ุจุญุซ ู„ูŠุณ ูู‚ุท ุจุงุณู… ุงู„ุนู†ุตุฑ ุงู„ุญุงู„ูŠ ูˆู†ูˆุนู‡ ุŒ ูˆู„ูƒู† ุฃูŠุถู‹ุง ุจุฃุณู…ุงุก ูˆุฃู†ูˆุงุน ูˆุงุญุฏ ุฃูˆ ุงุซู†ูŠู† ู…ู† ุฃู‚ุฑุจ ุฃุณู„ุงูู‡.


ุฏุนูˆู†ุง ู†ู„ู‚ูŠ ู†ุธุฑุฉ ุนู„ู‰ ุจุนุถ ุงู„ุฃู…ุซู„ุฉ. ุจุงุฏุฆ ุฐูŠ ุจุฏุก ุŒ ุณู†ุฌุฏ ุฌู…ูŠุน ุงู„ู…ู†ุงุฒู„ ุจุฑู‚ู… "220".


ุงู„ุฌุฏูˆู„ 6. ู†ุชูŠุฌุฉ ุงู„ูˆุธูŠูุฉ fstf_Houses_SearchByName ('220')



ุนู„ู‰ ุนูƒุณ ูˆุธูŠูุฉ ุงู„ุจุญุซ ุนู† ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ( fstf_AddressObjects_SearchByName ) ุŒ ูุฅู† ู†ุชูŠุฌุฉ ู‡ุฐู‡ ุงู„ูˆุธูŠูุฉ ู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ุชุฃุซูŠุฑ "ุงู„ุณุจุงุญุฉ" ู…ู† ุฎู„ุงู„ ู…ุณุชูˆูŠุงุช ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู†. ุชุญุชูˆูŠ ุงู„ู…ุนู„ู…ุฉ ุงู„ุฃูˆู„ู‰ ู„ู„ุฏุงู„ุฉ ุฏุงุฆู…ู‹ุง ุนู„ู‰ ู†ู…ุท ุงู„ุจุญุซ ู„ุฑู‚ู… ุงู„ู…ู†ุฒู„ ุŒ ูˆุงู„ุซุงู†ูŠุฉ - ุฑู‚ู… ุงู„ู…ุจู†ู‰ ุŒ ูˆุฑู‚ู… ุงู„ู…ุจู†ู‰ ุงู„ุซุงู„ุซ.


ุงู„ุขู† ู‚ู… ุจุชุบูŠูŠุฑ ุงู„ุทู„ุจ. ู†ุฌุฏ ุฌู…ูŠุน ู…ู†ุงุฒู„ ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† ุŒ ุงู„ุชูŠ ูŠุญุชูˆูŠ ุนุฏุฏู‡ุง ุนู„ู‰ ุงู„ุฑู‚ู… "1" ุŒ ูˆุชุธู‡ุฑ ูƒู„ู…ุฉ "Krasnoyarsk" ููŠ ุงู„ุฃุณู…ุงุก.


ุงู„ุฌุฏูˆู„ 7. ู†ุชูŠุฌุฉ ุงู„ูˆุธูŠูุฉ fstf_Houses_SearchByName ('1'ุŒ NULLุŒ NULLุŒ 'Krasnoyarsk')



ูŠุชุฒุงู…ู† ุงู„ุบุฑุถ ู…ู† ุงู„ู…ุนู„ู…ุงุช ุงู„ู…ุชุจู‚ูŠุฉ ุชู…ุงู…ู‹ุง ู…ุน ุงู„ุบุฑุถ ู…ู† ู…ุนู„ู…ุงุช ูˆุธูŠูุฉ ุงู„ุจุญุซ ู„ุนู†ุงุตุฑ ุชูˆู„ูŠุฏ ุงู„ุนู†ูˆุงู† (fstf_AddressObjects_SearchByName).
ู†ุต ุงู„ูˆุธูŠูุฉ ู…ูˆุฌูˆุฏ ููŠ ู‚ุณู… ุงู„ุชุทุจูŠู‚ " ุฅู†ุดุงุก ูˆุธูŠูุฉ fstf_Houses_SearchByName "

.

ูƒูŠู ูŠุนู…ู„


ูŠุดุจู‡ ุชู†ููŠุฐ fstf_Houses_SearchByName ู…ู† ู†ูˆุงุญ ุนุฏูŠุฏุฉ ุชู†ููŠุฐ ูˆุธูŠูุฉ ุงู„ุจุญุซ ู„ุนู†ุงุตุฑ ุชูˆู„ูŠุฏ ุงู„ุนู†ูˆุงู† (fstf_AddressObjects_SearchByName) . ูˆุงู„ูุฑู‚ ุงู„ุฑุฆูŠุณูŠ ู‡ูˆ ุฃู† ุงู„ุจุญุซ ูŠุชู… ููŠ ุฌุฏูˆู„ูŠู† ู…ุฑุชุจุทูŠู† ุŒ fias_Houses ูˆ fias_AddressObjects .


ุชุญุชูˆูŠ ุงู„ุฏุงู„ุฉ ุนู„ู‰ 9 ูˆุณูŠุทุงุช. ุฃูˆู„ ุซู„ุงุซุฉ ู…ู†ู‡ู… ู‡ูŠ ุฃุฑู‚ุงู… ุงู„ู…ู†ุงุฒู„ ( a_HouseNum ) ูˆุงู„ู…ุจู†ู‰ (a_BuildNum ) ูˆุงู„ู…ุจู†ู‰ ( a_StrucNum ). ูŠุชุทุงุจู‚ ุชู…ุงู…ู‹ุง ุงู„ู€ 6 ุงู„ู…ุชุจู‚ูŠุฉ ( a_FormalName ุŒ a_ShortName ุŒ a_ParentFormalName ุŒ a_ParentShortName ุŒ a_GrandParentFormalName ุŒ a_GrandParentShortName ) ุชู…ุงู…ู‹ุง ู…ุน ู…ุนู„ู…ุงุช ุงู„ุฏุงู„ุฉ.

ุฅุฐุง ู‚ู…ุช ุจุชุนูŠูŠู† ู‚ูŠู…ุฉ ู…ุนู„ู…ุฉ "ุฑู‚ู… ุงู„ู…ู†ุฒู„" ูู‚ุท ุŒ ูุณุชูุฑุฌุน ุงู„ุฏุงู„ุฉ ุฌู…ูŠุน ุงู„ุนู†ุงูˆูŠู† ููŠ ุฑู‚ู… ุงู„ู…ู†ุฒู„ ุงู„ุชูŠ ูŠู„ุชู‚ูŠ ุจู‡ุง ุงู„ุชุณู„ุณู„ ุงู„ู…ุญุฏุฏ ุจุฑู…ุฒ. ุฅุฐุง ู‚ู…ุช ุจุชู…ุฑูŠุฑ NULL ุฃูˆ ุณู„ุณู„ุฉ ูุงุฑุบุฉ ("") ูƒุฑู‚ู… ุงู„ู…ู†ุฒู„ ุŒ ูุณูŠุชู… ุฅุฑุฌุงุน ุนู†ุงูˆูŠู† ุฌู…ูŠุน ุงู„ู…ู†ุงุฒู„ ุงู„ุชูŠ ุชู… ุชุญุฏูŠุฏ ุนู†ุงุตุฑ ุนู†ูˆุงู†ู‡ุง ุจูˆุงุณุทุฉ ู…ุฌู…ูˆุนุฉ ู…ู† ุงู„ู…ุนู„ู…ุงุช ุงู„ุฃุฎุฑู‰.



ุงู„ุฎุงุชู…ุฉ


ูŠุญุชูˆูŠ ู‡ุฐุง ุงู„ู‚ุณู… ุนู„ู‰ ุชูˆุตูŠุงุช ุญูˆู„ ูƒูŠููŠุฉ ุชุญู…ูŠู„ ู‚ุงุฆู…ุฉ ู…ู†ุงุฒู„ FIAS ููŠ ุฌุฏูˆู„ fias_Houses .


ูŠุชู… ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช ููŠ ุฌุฏูˆู„ ุงู„ู…ู†ุงุฒู„ ุจู†ูุณ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุชูŠ ูŠุชู… ุจู‡ุง ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช ููŠ ุฌุฏูˆู„ ุนู†ุงุตุฑ ุชูƒูˆูŠู† ุงู„ุนู†ูˆุงู† . ุณูŠูƒูˆู† ุงู„ู…ู„ู ุงู„ู…ุตุฏุฑ ูู‚ุท HOUSE99.DBF ูˆู„ูŠุณ ADDROB99.DBF . ู‡ู†ุง 99 ู‡ูˆ ุฑู‚ู… ุงู„ู…ู†ุทู‚ุฉ (ุฌู…ู‡ูˆุฑูŠุฉ ุŒ ุฅู‚ู„ูŠู… ุŒ ุฅู‚ู„ูŠู…). ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุจุงู„ู†ุณุจุฉ ุฅู„ู‰ ุฅู‚ู„ูŠู… ูƒุฑุงุณู†ูˆูŠุงุฑุณูƒ ุŒ ูŠูƒูˆู† ุงู„ู…ู„ู ุงู„ู…ุตุฏุฑ ู‡ูˆ ู…ู„ู HOUSE24.DBF .


ุฃูˆู„ุงู‹ ุŒ ูŠุชู… ุชู†ุฒูŠู„ ุงู„ุฃุฑุดูŠู ุงู„ุชุงู„ูŠ ู…ุน ุงู„ุชุญุฏูŠุซ ู…ู† ุตูุญุฉ ุชุญุฏูŠุซุงุช FIAS. ูŠุชู… ุงุณุชุฎุฑุงุฌ ู…ู„ู HOUSE99.DBF ู…ู†ู‡ .

.

ุซู… ูŠุชู… ุชุญูˆูŠู„ ู…ู„ู HOUSE99.DBF ุฅู„ู‰ ุชู†ุณูŠู‚ CSV ูˆุชุญูˆูŠู„ู‡ ุจุงู„ูุนู„ ุŒ ูŠุชู… ุชุญู…ูŠู„ู‡ ุจูˆุงุณุทุฉ ุนุจุงุฑุฉ COPY ููŠ ุงู„ุฌุฏูˆู„ ุงู„ู…ุคู‚ุช fias_Houses_Temp .


ูˆุฃุฎูŠุฑู‹ุง ุŒ ูŠุชู… ุงุณุชุฎุฏุงู… ุงู„ุจูŠุงู†ุงุช ุงู„ู…ุคู‚ุชุฉ ู„ุชุญุฏูŠุซ ุงู„ุฌุฏูˆู„ ุงู„ุฑุฆูŠุณูŠ ุŒ ุฃูŠ ุชุชู… ุฅุถุงูุฉ ุบูŠุฑ ู…ูˆุฌูˆุฏุฉ ููŠ fias_House ุŒ ูˆูŠุชู… ุงุณุชุจุฏุงู„ ุงู„ู…ู†ุงุฒู„ ุงู„ู…ูˆุฌูˆุฏุฉ.
ูˆูŠุฑุฏ ู…ุซุงู„ ุนู„ู‰ ุจุฑู†ุงู…ุฌ ู†ุตูŠ ู„ุชุญุฏูŠุซ ุฌุฏูˆู„ ุงู„ู…ู†ุงุฒู„ ููŠ ู‚ุณู… " ุชู†ุฒูŠู„ ุชุญุฏูŠุซุงุช ู…ู†ุฒู„ FIAS ุฅู„ู‰ fias_Houses Table ".


ุงู„ุชุทุจูŠู‚


ุฅู†ุดุงุก ุฏุงู„ุฉ fstf_Houses_AddressObjectTree


ูŠู…ูƒู† ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ุชุนู„ูŠู‚ุงุช ุนู„ู‰ ุฑู…ุฒ ู…ุตุฏุฑ ุงู„ูˆุธูŠูุฉ ู‡ู†ุง .

ุฑู…ุฒ ุงู„ูˆุธูŠูุฉ
 BEGIN TRANSACTION; DROP FUNCTION IF EXISTS fstf_Houses_AddressObjectTree(a_AOGUID VARCHAR(36), a_HOUSEGUID VARCHAR(36),a_CurrStatus INTEGER,a_ENDDATE TIMESTAMP); /******************************************************************/ /*   (  )   */ /*      */ /******************************************************************/ CREATE OR REPLACE FUNCTION fstf_Houses_AddressObjectTree( a_AOGUID VARCHAR(36), /*    */ /*  */ a_HOUSEGUID VARCHAR(36),/*     */ a_CurrStatus INTEGER default 0,/*    4: */ /* 0 - , */ /* 1-50 - , ..  */ /*  , */ /*    */ /*    */ /*  , */ /* 51 -  */ a_ENDDATE TIMESTAMP default '2079-06-06' /*     */ ) RETURNS TABLE (rtf_GUID VARCHAR(36), rtf_CurrStatus INTEGER,rtf_ActStatus INTEGER, rtf_AOLevel INTEGER,rtf_ShortTypeName VARCHAR(10),rtf_AddressObjectName VARCHAR(100)) AS $BODY$ DECLARE c_HouseAOLevel CONSTANT INTEGER:=8; c_HouseShortTypeName CONSTANT VARCHAR(10):='.'; c_BuildShortTypeName CONSTANT VARCHAR(10):='.'; c_StructShortTypeName CONSTANT VARCHAR(10):='.'; c_StatusActual CONSTANT INTEGER:=1; /*    */ c_StatusNotActual CONSTANT INTEGER:=0; /*     */ c_MAXENDDATE CONSTANT TIMESTAMP:=to_timestamp('2079-06-06 00:00:00', 'YYYY-MM-DD'); v_HouseActStatus INTEGER; /*    */ v_HouseCurrStatus INTEGER; /*     */ v_ENDDATE TIMESTAMP; /*    */ v_HOUSEGUID VARCHAR(36); /*     */ v_HOUSENUM VARCHAR(10); /*   */ v_BUILDNUM VARCHAR(10); /*   */ v_STRUCNUM VARCHAR(10); /*   */ v_Return_Error Integer :=0; /*   */ --************************************************************ --************************************************************ BEGIN RETURN QUERY SELECT * FROM fstf_AddressObjects_AddressObjectTree (a_AOGUID,a_CurrStatus); IF a_ENDDATE IS NULL THEN SELECT INTO v_ENDDATE MAX(ENDDATE) FROM fias_Houses WHERE AOGUID=a_AOGUID AND HOUSEGUID=a_HOUSEGUID; ELSE v_ENDDATE:=a_ENDDATE; END IF; SELECT INTO v_HOUSENUM,v_BUILDNUM,v_STRUCNUM, v_ENDDATE,v_HouseCurrStatus h.HOUSENUM,h.BUILDNUM,h.STRUCNUM, h.ENDDATE,ah.HouseCurrStatus FROM fias_Houses h INNER JOIN (SELECT AOGUID,HOUSEGUID,ENDDATE, RANK() OVER (PARTITION BY AOGUID, HOUSEGUID ORDER BY ENDDATE ASC) AS HouseCurrStatus FROM fias_Houses insh WHERE insh.AOGUID=a_AOGUID AND insh.HOUSEGUID=a_HOUSEGUID) as ah ON h.AOGUID=ah.AOGUID AND h.HOUSEGUID=ah.HOUSEGUID AND h.ENDDATE=ah.ENDDATE WHERE h.ENDDATE=v_ENDDATE; v_HouseActStatus:=CASE WHEN COALESCE(v_ENDDATE,c_MAXENDDATE)= c_MAXENDDATE THEN c_StatusActual ELSE c_StatusNotActual END; v_HouseCurrStatus:=CASE WHEN COALESCE(v_ENDDATE,c_MAXENDDATE)= c_MAXENDDATE THEN 0 ELSE v_HouseCurrStatus END; IF v_HOUSENUM IS NOT NULL THEN RETURN QUERY SELECT a_HOUSEGUID,v_HouseCurrStatus,v_HouseActStatus, c_HouseAOLevel,c_HouseShortTypeName,v_HOUSENUM; END IF; IF v_BUILDNUM IS NOT NULL THEN RETURN QUERY SELECT a_HOUSEGUID,v_HouseCurrStatus,v_HouseActStatus, c_HouseAOLevel,c_BuildShortTypeName,v_BUILDNUM; END IF; IF v_STRUCNUM IS NOT NULL THEN RETURN QUERY SELECT a_HOUSEGUID,v_HouseCurrStatus,v_HouseActStatus, c_HouseAOLevel,c_StructShortTypeName,v_STRUCNUM; END IF; END; $BODY$ LANGUAGE plpgsql; COMMENT ON FUNCTION fstf_Houses_AddressObjectTree(a_AOGUID VARCHAR(36), a_HOUSEGUID VARCHAR(36),a_CurrStatus INTEGER,a_ENDDATE TIMESTAMP) IS '  (  )       '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; BEGIN TRANSACTION; DROP FUNCTION IF EXISTS fstf_Houses_AddressObjectTree(a_HOUSEGUID VARCHAR(36),a_ENDDATE TIMESTAMP); /******************************************************************/ /*   (  )   */ /*      */ /******************************************************************/ CREATE OR REPLACE FUNCTION fstf_Houses_AddressObjectTree( a_HOUSEGUID VARCHAR(36),/*     */ a_ENDDATE TIMESTAMP default '2079-06-06'/*     */ ) RETURNS TABLE (rtf_GUID VARCHAR(36), rtf_CurrStatus INTEGER,rtf_ActStatus INTEGER, rtf_AOLevel INTEGER,rtf_ShortTypeName VARCHAR(10),rtf_AddressObjectName VARCHAR(100)) AS $BODY$ DECLARE c_MaxEndDate CONSTANT TIMESTAMP:=TO_TIMESTAMP('2079-06-06','YYYY-MM-DD'); c_ActualStatusCode CONSTANT INTEGER :=1; /*      */ c_NotActualStatusCode CONSTANT INTEGER :=0; /*     */ v_AOGUID VARCHAR(36); /*   */ /*   */ v_CurrStatus INTEGER; /*    4: */ /* 0 - , */ /* 1-50 - , */ /* ..   , */ /*     */ /*     , */ /* 51 - */ v_Return_Error Integer :=0; /*   */ --******************************************************************* --******************************************************************* BEGIN SELECT INTO v_AOGUID,v_CurrStatus h.AOGUID, CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE ao.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE ao.aoguid = iao.aoguid) ELSE 0 END FROM fias_Houses h INNER JOIN fias_AddressObjects ao ON h.AOGUID=ao.AOGUID WHERE h.HOUSEGUID=a_HOUSEGUID AND h.ENDDATE=COALESCE(a_ENDDATE,c_MaxEndDate) ORDER BY h.ENDDATE DESC; RETURN QUERY SELECT * FROM fstf_Houses_AddressObjectTree( v_AOGUID,a_HOUSEGUID, v_CurrStatus,a_ENDDATE); END; $BODY$ LANGUAGE plpgsql; COMMENT ON FUNCTION fstf_Houses_AddressObjectTree(a_HOUSEGUID VARCHAR(36),a_ENDDATE TIMESTAMP) IS '  (  )       '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; SELECT * FROM fstf_Houses_AddressObjectTree('8b40b028-68eb-4315-a256-ea300c604688','42301ab8-9ead-4f8e-8281-e64f2769a254') ORDER BY rtf_AOLevel; SELECT * FROM fstf_Houses_AddressObjectTree('42301ab8-9ead-4f8e-8281-e64f2769a254') ORDER BY rtf_AOLevel; 



ุฅู†ุดุงุก ูˆุธูŠูุฉ fsfn_Houses_TreeActualName


ูŠู…ูƒู† ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ุชุนู„ูŠู‚ุงุช ุนู„ู‰ ุฑู…ุฒ ู…ุตุฏุฑ ุงู„ูˆุธูŠูุฉ ู‡ู†ุง .
ุฑู…ุฒ ุงู„ูˆุธูŠูุฉ
 BEGIN TRANSACTION; DROP FUNCTION IF EXISTS fsfn_Houses_TreeActualName(a_AOGUID VARCHAR(36),a_HOUSEGUID VARCHAR(36),a_MaskArray VARCHAR(2)[10]) CASCADE; /*****************************************************************/ /*           */ /*****************************************************************/ CREATE OR REPLACE FUNCTION fsfn_Houses_TreeActualName( a_AOGUID VARCHAR(36), /*    */ a_HOUSEGUID VARCHAR(36), /*     */ a_MaskArray VARCHAR(2)[10] default '{TP,LM,LP,ST,HS,BY,BG}' /*  ,   */ /*    */ ) RETURNS VARCHAR(1000) AS $BODY$ DECLARE c_HouseMaskArray CONSTANT VARCHAR(2)[3]:='{HS,BY,BG}'; /*    */ c_HouseNoMask CONSTANT VARCHAR(2)[1] :='{HS}'; c_BodyNoMask CONSTANT VARCHAR(2)[1] :='{BY}';/*  */ c_BuildingNoMask CONSTANT VARCHAR(2)[1] :='{BG}';/*  */ c_HouseShortTypeName CONSTANT VARCHAR(10):='.'; c_BuildShortTypeName CONSTANT VARCHAR(10):='.'; c_StructShortTypeName CONSTANT VARCHAR(10):='.'; v_ENDDATE TIMESTAMP; /*    */ v_HOUSENUM VARCHAR(10); /*   */ v_BUILDNUM VARCHAR(10); /*   */ v_STRUCNUM VARCHAR(10); /*   */ v_TreeAddressObjectName VARCHAR(1000); /*     */ v_Return_Error Integer :=0; /*   */ --******************************************************* --******************************************************* BEGIN v_TreeAddressObjectName:=fsfn_AddressObjects_TreeActualName (a_AOGUID,a_MaskArray); SELECT INTO v_ENDDATE MAX(ENDDATE) FROM fias_Houses WHERE AOGUID=a_AOGUID AND HOUSEGUID=a_HOUSEGUID; SELECT INTO v_HOUSENUM,v_BUILDNUM,v_STRUCNUM HOUSENUM, BUILDNUM,STRUCNUM FROM fias_Houses WHERE AOGUID=a_AOGUID AND HOUSEGUID=a_HOUSEGUID AND ENDDATE=v_ENDDATE; IF c_HouseNoMask <@ a_MaskArray AND COALESCE(TRIM(v_HOUSENUM),'')<>'' THEN v_TreeAddressObjectName:=v_TreeAddressObjectName|| CASE WHEN v_TreeAddressObjectName='' THEN '' ELSE ', ' ||c_HouseShortTypeName||' '||v_HOUSENUM END; END IF; IF c_BodyNoMask <@ a_MaskArray AND COALESCE(TRIM(v_BUILDNUM),'')<>'' THEN v_TreeAddressObjectName:=v_TreeAddressObjectName|| CASE WHEN v_TreeAddressObjectName='' THEN '' ELSE ', ' || c_BuildShortTypeName||' '||v_BUILDNUM END; END IF; IF c_BuildingNoMask <@ a_MaskArray AND COALESCE(TRIM(v_STRUCNUM),'')<>'' THEN v_TreeAddressObjectName:=v_TreeAddressObjectName|| CASE WHEN v_TreeAddressObjectName='' THEN '' ELSE ', ' || c_StructShortTypeName||' '||v_STRUCNUM END; END IF; RETURN v_TreeAddressObjectName; END; $BODY$ LANGUAGE plpgsql ; COMMENT ON FUNCTION fsfn_Houses_TreeActualName(a_AOGUID VARCHAR(36),a_HOUSEGUID VARCHAR(36),a_MaskArray VARCHAR(2)[10]) IS '         '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; BEGIN TRANSACTION; DROP FUNCTION IF EXISTS fsfn_Houses_TreeActualName(a_HOUSEGUID VARCHAR(36),a_MaskArray VARCHAR(2)[10]) CASCADE; /*****************************************************************/ /*           */ /*****************************************************************/ CREATE OR REPLACE FUNCTION fsfn_Houses_TreeActualName( a_HOUSEGUID VARCHAR(36), /*     */ a_MaskArray VARCHAR(2)[10] default '{TP,LM,LP,ST,HS,BY,BG}' /*  ,   */ /*    */ ) RETURNS VARCHAR(1000) AS $BODY$ DECLARE c_MaxEndDate CONSTANT TIMESTAMP:=TO_TIMESTAMP('2079-06-06','YYYY-MM-DD'); v_AOGUID VARCHAR(36); /*    */ v_TreeAddressObjectName VARCHAR(1000); /*     */ v_Return_Error Integer :=0; /*   */ --********************************************************** --********************************************************** BEGIN SELECT INTO v_AOGUID h.AOGUID FROM fias_Houses h INNER JOIN fias_AddressObjects ao ON h.AOGUID=ao.AOGUID WHERE h.HOUSEGUID=a_HOUSEGUID AND h.ENDDATE=c_MaxEndDate ORDER BY h.ENDDATE DESC; v_TreeAddressObjectName:=fsfn_Houses_TreeActualName (v_AOGUID,a_HOUSEGUID,a_MaskArray); RETURN v_TreeAddressObjectName; END; $BODY$ LANGUAGE plpgsql ; COMMENT ON FUNCTION fsfn_Houses_TreeActualName(a_HOUSEGUID VARCHAR(36),a_MaskArray VARCHAR(2)[10]) IS '         '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; SELECT fsfn_Houses_TreeActualName('8b40b028-68eb-4315-a256-ea300c604688','42301ab8-9ead-4f8e-8281-e64f2769a254'); SELECT fsfn_Houses_TreeActualName('42301ab8-9ead-4f8e-8281-e64f2769a254'); 



ุฅู†ุดุงุก ุฏุงู„ุฉ fstf_Houses_SearchByName


ูŠู…ูƒู† ุงู„ุนุซูˆุฑ ุนู„ู‰ ุงู„ุชุนู„ูŠู‚ุงุช ุนู„ู‰ ุฑู…ุฒ ู…ุตุฏุฑ ุงู„ูˆุธูŠูุฉ ู‡ู†ุง .
ุฑู…ุฒ ุงู„ูˆุธูŠูุฉ
 BEGIN TRANSACTION; DROP FUNCTION IF EXISTS fstf_Houses_SearchByName(a_HouseNum VARCHAR(20),a_BuildNum VARCHAR(10),a_StrucNum VARCHAR(10),a_FormalName VARCHAR(150),a_ShortName VARCHAR(20),a_ParentFormalName VARCHAR(150),a_ParentShortName VARCHAR(20), a_GrandParentFormalName VARCHAR(150),a_GrandParentShortName VARCHAR(20)); /*****************************************************/ /*       */ /*        */ /*****************************************************/ CREATE OR REPLACE FUNCTION fstf_Houses_SearchByName( a_HouseNum VARCHAR(20), /*   */ a_BuildNum VARCHAR(10) default NULL,/*   */ a_StrucNum VARCHAR(10) default NULL, /*   */ a_FormalName VARCHAR(150) default NULL, /*  */ /*     */ a_ShortName VARCHAR(20) default NULL, /*  */ /*     */ a_ParentFormalName VARCHAR(150) default NULL, /*  */ /*     */ a_ParentShortName VARCHAR(20) default NULL, /*  */ /*     */ a_GrandParentFormalName VARCHAR(150) default NULL, /*  */ /*     */ a_GrandParentShortName VARCHAR(20) default NULL /*  */ /*     */ ) RETURNS TABLE (rtf_AOGUID VARCHAR(36),rtf_HOUSEGUID VARCHAR(36),rtf_AOLevel INTEGER,rtf_HousesFullName VARCHAR(1000),rtf_HouseNum VARCHAR(20),rtf_BuildNum VARCHAR(10),rtf_StrucNum VARCHAR(10),rtf_EndDate TIMESTAMP,rtf_ShortName VARCHAR(20),rtf_FormalName VARCHAR(150), rtf_CurrStatus INTEGER,rtf_ActStatus INTEGER, rtf_ParentShortName VARCHAR(20),rtf_ParentFormalName VARCHAR(150),rtf_GrandParentShortName VARCHAR(20),rtf_GrandParentFormalName VARCHAR(150)) AS $BODY$ DECLARE c_WildChar CONSTANT VARCHAR(2)='%'; c_BlankChar CONSTANT VARCHAR(2)=' '; v_HouseNumTemplate VARCHAR(150); /*     */ v_BuildNumTemplate VARCHAR(150); /*     */ v_StrucNumTemplate VARCHAR(150); /*     */ v_FormalNameTemplate VARCHAR(150); /*    */ /*   */ v_ShortNameTemplate VARCHAR(20); /*    */ /*    */ v_ParentFormalNameTemplate VARCHAR(150); /*    */ /*    */ v_ParentShortNameTemplate VARCHAR(20); /*    */ /*     */ v_GrandParentFormalNameTemplate VARCHAR(150); /*    */ /*    */ v_GrandParentShortNameTemplate VARCHAR(20); /*   */ /*     */ --*************************************************************** --*************************************************************** BEGIN v_ShortNameTemplate:=UPPER(COALESCE(c_WildChar ||REPLACE(TRIM(a_ShortName),c_BlankChar,c_WildChar) ||c_WildChar,c_WildChar)); v_FormalNameTemplate:=UPPER(COALESCE(c_WildChar ||REPLACE(TRIM(a_FormalName),c_BlankChar,c_WildChar) ||c_WildChar,c_WildChar)); v_HouseNumTemplate:= CASE WHEN TRIM(COALESCE(a_HouseNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_HouseNum),c_BlankChar,c_WildChar)) END ||CASE WHEN TRIM(COALESCE(a_BuildNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_BuildNum),c_BlankChar,c_WildChar)) END || CASE WHEN TRIM(COALESCE(a_StrucNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_StrucNum),c_BlankChar,c_WildChar)) END; v_HouseNumTemplate:=v_HouseNumTemplate||c_WildChar; v_HouseNumTemplate:=CASE WHEN TRIM(COALESCE(a_HouseNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_HouseNum),c_BlankChar,c_WildChar)) END ||c_WildChar; v_BuildNumTemplate:=CASE WHEN TRIM(COALESCE(a_BuildNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_BuildNum),c_BlankChar,c_WildChar)) END ||c_WildChar; v_StrucNumTemplate:=CASE WHEN TRIM(COALESCE(a_StrucNum,''))='' THEN '' ELSE LOWER(c_WildChar ||REPLACE(TRIM(a_StrucNum),c_BlankChar,c_WildChar)) END||c_WildChar; IF a_FormalName IS NOT NULL AND a_ParentFormalName IS NULL AND a_ParentShortName IS NULL AND a_GrandParentFormalName IS NULL AND a_GrandParentShortName IS NULL THEN IF a_HouseNum IS NOT NULL OR a_BuildNum IS NOT NULL OR a_StrucNum IS NOT NULL THEN RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum, h.EndDate,cfa.ShortName,cfa.FORMALNAME, cfa.currstatus,cfa.Actstatus, NULL::VARCHAR,NULL::VARCHAR,NULL::VARCHAR,NULL::VARCHAR FROM fias_AddressObjects cfa INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate AND TRIM(LOWER(COALESCE(h.HouseNum,''))) LIKE v_HouseNumTemplate AND TRIM(LOWER(COALESCE(h.BuildNum,''))) LIKE v_BuildNumTemplate AND TRIM(LOWER(COALESCE(h.StrucNum,''))) LIKE v_StrucNumTemplate ORDER BY cfa.AOLevel,cfa.ShortName,cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'),h.HouseNum, TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'),h.BuildNum, TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'),h.StrucNum; ELSE RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum,h.EndDate, cfa.ShortName,cfa.FORMALNAME,cfa.currstatus,cfa.Actstatus, NULL::VARCHAR,NULL::VARCHAR,NULL::VARCHAR,NULL::VARCHAR FROM fias_AddressObjects cfa INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate ORDER BY cfa.AOLevel,cfa.ShortName,cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'),h.HouseNum, TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'),h.BuildNum, TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'),h.StrucNum; END IF; ELSIF a_FormalName IS NOT NULL AND a_ParentFormalName IS NOT NULL AND a_GrandParentFormalName IS NULL AND a_GrandParentShortName IS NULL THEN v_ParentShortNameTemplate:=UPPER(COALESCE(c_WildChar ||REPLACE(TRIM(a_ParentShortName),c_BlankChar,c_WildChar) ||c_WildChar,c_WildChar)); v_ParentFormalNameTemplate:=UPPER(c_WildChar ||REPLACE(TRIM(a_ParentFormalName),c_BlankChar,c_WildChar) ||c_WildChar); v_FormalNameTemplate:=COALESCE(v_FormalNameTemplate,c_WildChar); IF a_HouseNum IS NOT NULL OR a_BuildNum IS NOT NULL OR a_StrucNum IS NOT NULL THEN RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum,h.EndDate, cfa.ShortName,cfa.FORMALNAME,cfa.currstatus, cfa.Actstatus,pfa.ShortName,pfa.FORMALNAME, NULL::VARCHAR,NULL::VARCHAR FROM fias_AddressObjects pfa INNER JOIN fias_AddressObjects cfa ON pfa.AOGUID=cfa.ParentGUID INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND pfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE pfa.aoguid = iao.aoguid) ELSE 0 END AND UPPER(pfa.FORMALNAME) LIKE v_ParentFormalNameTemplate AND UPPER(pfa.ShortName) LIKE v_ParentShortNameTemplate AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate AND TRIM(LOWER(COALESCE(h.HouseNum,''))) LIKE v_HouseNumTemplate AND TRIM(LOWER(COALESCE(h.BuildNum,''))) LIKE v_BuildNumTemplate AND TRIM(LOWER(COALESCE(h.StrucNum,''))) LIKE v_StrucNumTemplate ORDER BY pfa.ShortName,pfa.FORMALNAME,cfa.AOLevel, cfa.ShortName,cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'), h.HouseNum,TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'), h.BuildNum,TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'), h.StrucNum; ELSE RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum, h.EndDate,cfa.ShortName,cfa.FORMALNAME, cfa.currstatus,cfa.Actstatus,pfa.ShortName, pfa.FORMALNAME,NULL::VARCHAR,NULL::VARCHAR FROM fias_AddressObjects pfa INNER JOIN fias_AddressObjects cfa ON pfa.AOGUID=cfa.ParentGUID INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND pfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE pfa.aoguid = iao.aoguid) ELSE 0 END AND UPPER(pfa.FORMALNAME) LIKE v_ParentFormalNameTemplate AND UPPER(pfa.ShortName) LIKE v_ParentShortNameTemplate AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate ORDER BY pfa.ShortName,pfa.FORMALNAME,cfa.AOLevel, cfa.ShortName,cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'), h.HouseNum, TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'), h.BuildNum, TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'),h.StrucNum; END IF; ELSE v_GrandParentShortNameTemplate:=COALESCE(UPPER( COALESCE(c_WildChar ||REPLACE(TRIM(a_GrandParentShortName),c_BlankChar,c_WildChar) ||c_WildChar,c_WildChar)),c_WildChar); v_GrandParentFormalNameTemplate:=COALESCE(UPPER( c_WildChar ||REPLACE(TRIM(a_GrandParentFormalName),c_BlankChar,c_WildChar) ||c_WildChar),c_WildChar); v_ParentShortNameTemplate:=COALESCE(UPPER( COALESCE(c_WildChar ||REPLACE(TRIM(a_ParentShortName),c_BlankChar,c_WildChar) ||c_WildChar,c_WildChar)),c_WildChar); v_ParentFormalNameTemplate:=COALESCE(UPPER( c_WildChar||REPLACE(TRIM(a_ParentFormalName),c_BlankChar,c_WildChar) ||c_WildChar),c_WildChar); v_FormalNameTemplate:=COALESCE(v_FormalNameTemplate,c_WildChar); IF a_HouseNum IS NOT NULL OR a_BuildNum IS NOT NULL OR a_StrucNum IS NOT NULL THEN RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum, h.EndDate,cfa.ShortName,cfa.FORMALNAME, cfa.currstatus,cfa.Actstatus,pfa.ShortName, pfa.FORMALNAME,gpfa.ShortName,gpfa.FORMALNAME FROM fias_AddressObjects gpfa INNER JOIN fias_AddressObjects pfa ON gpfa.AOGUID=pfa.ParentGUID INNER JOIN fias_AddressObjects cfa ON pfa.AOGUID=cfa.ParentGUID INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND pfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE pfa.aoguid = iao.aoguid) ELSE 0 END AND gpfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE gpfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND UPPER(gpfa.FORMALNAME) LIKE v_GrandParentFormalNameTemplate AND UPPER(gpfa.ShortName) LIKE v_GrandParentShortNameTemplate AND UPPER(pfa.FORMALNAME) LIKE v_ParentFormalNameTemplate AND UPPER(pfa.ShortName) LIKE v_ParentShortNameTemplate AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate AND TRIM(LOWER(COALESCE(h.HouseNum,''))) LIKE v_HouseNumTemplate AND TRIM(LOWER(COALESCE(h.BuildNum,''))) LIKE v_BuildNumTemplate AND TRIM(LOWER(COALESCE(h.StrucNum,''))) LIKE v_StrucNumTemplate ORDER BY gpfa.ShortName,gpfa.FORMALNAME,pfa.ShortName, pfa.FORMALNAME,cfa.AOLevel,cfa.ShortName, cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'), h.HouseNum, TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'), h.BuildNum, TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'),h.StrucNum; ELSE RETURN QUERY SELECT cfa.AOGUID,h.HouseGUID,cfa.AOLevel, fsfn_Houses_TreeActualName(h.AOGUID,h.HouseGUID), h.HouseNum,h.BuildNum,h.StrucNum, h.EndDate,cfa.ShortName,cfa.FORMALNAME, cfa.currstatus,cfa.Actstatus,pfa.ShortName, pfa.FORMALNAME,gpfa.ShortName,gpfa.FORMALNAME FROM fias_AddressObjects gpfa INNER JOIN fias_AddressObjects pfa ON gpfa.AOGUID=pfa.ParentGUID INNER JOIN fias_AddressObjects cfa ON pfa.AOGUID=cfa.ParentGUID INNER JOIN fias_Houses h ON cfa.aoguid = h.aoguid WHERE cfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) ELSE 0 END AND pfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE pfa.aoguid = iao.aoguid) ELSE 0 END AND gpfa.currstatus= CASE WHEN 0 < ALL(SELECT iao.currstatus FROM fias_AddressObjects iao WHERE cfa.aoguid = iao.aoguid) THEN (SELECT MAX(iao.currstatus) FROM fias_AddressObjects iao WHERE gpfa.aoguid = iao.aoguid) ELSE 0 END AND h.EndDate=(SELECT MAX(ih.EndDate) FROM fias_Houses ih WHERE cfa.aoguid = ih.aoguid AND h.HouseGUID = ih.HouseGUID) AND UPPER(gpfa.FORMALNAME) LIKE v_GrandParentFormalNameTemplate AND UPPER(gpfa.ShortName) LIKE v_GrandParentShortNameTemplate AND UPPER(pfa.FORMALNAME) LIKE v_ParentFormalNameTemplate AND UPPER(pfa.ShortName) LIKE v_ParentShortNameTemplate AND UPPER(cfa.FORMALNAME) LIKE v_FormalNameTemplate AND UPPER(cfa.ShortName) LIKE v_ShortNameTemplate ORDER BY gpfa.ShortName,gpfa.FORMALNAME,pfa.ShortName, pfa.FORMALNAME,cfa.AOLevel,cfa.ShortName, cfa.FORMALNAME, TO_NUMBER(SUBSTRING(h.HouseNum,E'\\d+'),'9999'), h.HouseNum, TO_NUMBER(SUBSTRING(h.BuildNum,E'\\d+'),'9999'), h.BuildNum, TO_NUMBER(SUBSTRING(h.StrucNum,E'\\d+'),'9999'), h.StrucNum; END IF; END IF; END; $BODY$ LANGUAGE plpgsql; COMMENT ON FUNCTION fstf_Houses_SearchByName(a_HouseNum VARCHAR(20),a_BuildNum VARCHAR(10),a_StrucNum VARCHAR(10),a_FormalName VARCHAR(150),a_ShortName VARCHAR(20),a_ParentFormalName VARCHAR(150),a_ParentShortName VARCHAR(20), a_GrandParentFormalName VARCHAR(150),a_GrandParentShortName VARCHAR(20)) IS '            '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; --SELECT * FROM fstf_Houses_SearchByName('220'); --SELECT * FROM fstf_Houses_SearchByName(NULL,NULL,'220'); SELECT * FROM fstf_Houses_SearchByName('1',NULL,NULL,''); SELECT * FROM fstf_Houses_SearchByName(NULL,NULL,NULL,'','','',NULL,''); 


ุฅู†ุดุงุก fias_Houses ู…ู†ุฒู„ ู…ู†ุฒู„ FIAS


ูƒูˆุฏ ุงู„ุจุฑู†ุงู…ุฌ ุงู„ู†ุตูŠ
 BEGIN TRANSACTION; DROP TABLE IF EXISTS fias_Houses; DROP TABLE IF EXISTS fias_EstateStatus; DROP TABLE IF EXISTS fias_StructureStatus; CREATE TABLE IF NOT EXISTS fias_Houses( HOUSEID VARCHAR(36) NOT NULL, AOGUID VARCHAR(36) NULL, HOUSEGUID VARCHAR(36) NULL, HOUSENUM VARCHAR(10) NULL, BUILDNUM VARCHAR(10) NULL, STRUCNUM VARCHAR(10) NULL, POSTALCODE VARCHAR(6) NULL, OKATO VARCHAR(11) NULL, OKTMO VARCHAR(11) NULL, IFNSFL VARCHAR(4) NULL, TERRIFNSFL VARCHAR(4) NULL, IFNSUL VARCHAR(4) NULL, TERRIFNSUL VARCHAR(4) NULL, ESTSTATUS INTEGER NULL, STATSTATUS INTEGER NULL, STRSTATUS INTEGER NULL, STARTDATE TIMESTAMP NULL, ENDDATE TIMESTAMP NULL, UPDATEDATE TIMESTAMP NULL, NORMDOC VARCHAR(36) NULL, COUNTER INTEGER NULL, CADNUM VARCHAR(50) NULL, DIVTYPE INTEGER NULL, CONSTRAINT XPKfias_Houses PRIMARY KEY ( HOUSEID )) WITH (OIDS=False); CREATE INDEX XIE1fias_Houses ON fias_Houses(AOGUID); CREATE INDEX XIE2fias_Houses ON fias_Houses(HOUSEGUID); CREATE INDEX XIE3fias_Houses ON fias_Houses(AOGUID,HOUSEGUID); CREATE INDEX XIE4fias_Houses ON fias_Houses(HOUSENUM,BUILDNUM,STRUCNUM); CREATE INDEX XIE5fias_Houses ON fias_Houses(HOUSENUM); CREATE INDEX XIE6fias_Houses ON fias_Houses(BUILDNUM); CREATE INDEX XIE7fias_Houses ON fias_Houses(STRUCNUM); COMMENT ON TABLE fias_Houses IS 'HOUSE         ,     .'; COMMENT ON COLUMN fias_Houses.HOUSEID IS '   '; COMMENT ON COLUMN fias_Houses.AOGUID IS '      (, ,    ..)'; COMMENT ON COLUMN fias_Houses.HOUSEGUID IS '   '; COMMENT ON COLUMN fias_Houses.HOUSENUM IS ' '; COMMENT ON COLUMN fias_Houses.BUILDNUM IS ' '; COMMENT ON COLUMN fias_Houses.STRUCNUM IS ' '; COMMENT ON COLUMN fias_Houses.POSTALCODE IS ' '; COMMENT ON COLUMN fias_Houses.IFNSFL IS '  '; COMMENT ON COLUMN fias_Houses.TERRIFNSFL IS '    '; COMMENT ON COLUMN fias_Houses.IFNSUL IS '  '; COMMENT ON COLUMN fias_Houses.TERRIFNSUL IS '    '; COMMENT ON COLUMN fias_Houses.OKATO IS ''; COMMENT ON COLUMN fias_Houses.OKTMO IS ''; COMMENT ON COLUMN fias_Houses.ESTSTATUS IS ' '; COMMENT ON COLUMN fias_Houses.STRSTATUS IS ' '; COMMENT ON COLUMN fias_Houses.STATSTATUS IS ' '; COMMENT ON COLUMN fias_Houses.STARTDATE IS '  '; COMMENT ON COLUMN fias_Houses.ENDDATE IS '  '; COMMENT ON COLUMN fias_Houses.UPDATEDATE IS '  () '; COMMENT ON COLUMN fias_Houses.NORMDOC IS '    '; COMMENT ON COLUMN fias_Houses.COUNTER IS '     4'; COMMENT ON COLUMN fias_Houses.CADNUM IS '  '; COMMENT ON COLUMN fias_Houses.DIVTYPE IS ' : 0 โ€“   1 โ€“  2 โ€“ '; CREATE TABLE IF NOT EXISTS fias_EstateStatus( EstateStatusID INTEGER NOT NULL, EstateStatusName varchar(60) NULL, EstateStatusShortName varchar(20) NULL, CONSTRAINT XPKfias_EstateStatus PRIMARY KEY (EstateStatusID)) WITH (OIDS=False); COMMENT ON TABLE fias_EstateStatus IS ' ()  '; COMMENT ON COLUMN fias_EstateStatus.EstateStatusID IS ' .  :0 โ€“  ,1 โ€“ ,2 โ€“ ,3 โ€“ '; COMMENT ON COLUMN fias_EstateStatus.EstateStatusName IS ''; COMMENT ON COLUMN fias_EstateStatus.EstateStatusShortName IS ' '; CREATE TABLE IF NOT EXISTS fias_StructureStatus( StructureStatusID INTEGER NOT NULL, StructureStatusName varchar(60) NULL, StructureStatusShortName varchar(20) NULL, CONSTRAINT XPKfias_StructureStatus PRIMARY KEY (StructureStatusID)) WITH (OIDS=False); COMMENT ON TABLE fias_StructureStatus IS ' ()  '; COMMENT ON COLUMN fias_StructureStatus.StructureStatusID IS ' .  :0 โ€“  ,1 โ€“ ,2 โ€“ ,3 โ€“ '; COMMENT ON COLUMN fias_StructureStatus.StructureStatusName IS ''; COMMENT ON COLUMN fias_StructureStatus.StructureStatusShortName IS ' '; --ROLLBACk TRANSACTION; COMMIT TRANSACTION; 



ุชู†ุฒูŠู„ ุชุญุฏูŠุซุงุช FIAS ุงู„ุฑุฆูŠุณูŠุฉ ุฅู„ู‰ fias_Houses Table


ูƒูˆุฏ ู…ุตุฏุฑ ุงู„ุจุฑู†ุงู…ุฌ ุงู„ู†ุตูŠ
 BEGIN TRANSACTION; do $$ BEGIN /****************************************/ /*    */ /****************************************/ DROP TABLE IF EXISTS fias_DeletedHouses_temp; DROP TABLE IF EXISTS fias_Houses_temp; DROP TABLE IF EXISTS fias_EstateStatus_temp; DROP TABLE IF EXISTS fias_StructureStatus_temp; CREATE TABLE fias_Houses_temp AS SELECT * FROM fias_Houses LIMIT 1; DELETE FROM fias_Houses_temp; CREATE TABLE fias_DeletedHouses_temp AS SELECT * FROM fias_Houses LIMIT 1; DELETE FROM fias_DeletedHouses_temp; CREATE TABLE fias_EstateStatus_temp AS SELECT * FROM fias_EstateStatus LIMIT 1; DELETE FROM fias_EstateStatus_temp; CREATE TABLE fias_StructureStatus_temp AS SELECT * FROM fias_StructureStatus LIMIT 1; DELETE FROM fias_StructureStatus_temp; /*****************************************************/ /*     fias_EstateStatus  */ /*  " "   */ /*****************************************************/ COPY fias_EstateStatus_temp(EstateStatusID,EstateStatusNAME,EstateStatusShortName) FROM 'W:\Projects\Enisey GIS\DB\SourceData\ESTSTAT_20180827.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'UTF8'); /*************************************************/ /*     */ /* " "     */ /*************************************************/ UPDATE fias_EstateStatus s SET EstateStatusNAME=t.EstateStatusNAME, EstateStatusShortName=t.EstateStatusShortName FROM fias_EstateStatus ds INNER JOIN fias_EstateStatus_temp t ON ds.EstateStatusID=t.EstateStatusID WHERE ds.EstateStatusID=s.EstateStatusID; INSERT INTO fias_EstateStatus(EstateStatusID,EstateStatusNAME,EstateStatusShortName) SELECT EstateStatusID,EstateStatusNAME,EstateStatusShortName FROM fias_EstateStatus_temp t WHERE NOT EXISTS (SELECT * FROM fias_EstateStatus os WHERE t.EstateStatusID=os.EstateStatusID); /******************************************************/ /*     fias_StructureStatus  */ /*  " "  */ /******************************************************/ COPY fias_StructureStatus_temp(StructureStatusID,StructureStatusNAME,StructureStatusShortName) FROM 'W:\Projects\Enisey GIS\DB\SourceData\STRSTAT_20180827.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'UTF8'); /*****************************************************************/ /*     " "  */ /*   */ /*****************************************************************/ UPDATE fias_StructureStatus s SET StructureStatusNAME=t.StructureStatusNAME, StructureStatusShortName=t.StructureStatusShortName FROM fias_StructureStatus ds INNER JOIN fias_StructureStatus_temp t ON ds.StructureStatusID=t.StructureStatusID WHERE ds.StructureStatusID=s.StructureStatusID; INSERT INTO fias_StructureStatus(StructureStatusID,StructureStatusNAME,StructureStatusShortName) SELECT StructureStatusID,StructureStatusNAME,StructureStatusShortName FROM fias_StructureStatus_temp t WHERE NOT EXISTS (SELECT * FROM fias_StructureStatus os WHERE t.StructureStatusID=os.StructureStatusID); /***********************************************************************/ /*     fias_Houses_temp     */ /**********************************************************************/ COPY fias_Houses_temp(AOGUID,BUILDNUM,ENDDATE,ESTSTATUS,HOUSEGUID,HOUSEID,HOUSENUM,STATSTATUS,IFNSFL,IFNSUL,OKATO,OKTMO,POSTALCODE,STARTDATE,STRUCNUM,STRSTATUS,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,NORMDOC,COUNTER,CADNUM,DIVTYPE) FROM 'W:\Projects\Enisey GIS\DB\SourceData\HOUSE24_20180827.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'UTF8'); /************************************************************/ /*     fias_DeletedHouses_temp , */ /*        */ /************************************************************/ /*  DHOUSE24      . */ /*         */ /************************************************************/ /* COPY fias_DeletedHouses_temp(AOGUID,BUILDNUM,ENDDATE,ESTSTATUS,HOUSEGUID,HOUSEID,HOUSENUM,STATSTATUS,IFNSFL,IFNSUL,OKATO,OKTMO,POSTALCODE,STARTDATE,STRUCNUM,STRSTATUS,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,NORMDOC,COUNTER,CADNUM,DIVTYPE) FROM 'W:\Projects\Enisey GIS\DB\SourceData\DHOUSE24_20180827.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'UTF8'); */ /***********************************************************************/ /*        */ /***********************************************************************/ UPDATE fias_Houses h SET AOGUID=t.AOGUID, BUILDNUM=t.BUILDNUM, ENDDATE=t.ENDDATE, ESTSTATUS=t.ESTSTATUS, HOUSEGUID=t.HOUSEGUID, HOUSENUM=t.HOUSENUM, STATSTATUS=t.STATSTATUS, IFNSFL=t.IFNSFL, IFNSUL=t.IFNSUL, OKATO=t.OKATO, OKTMO=t.OKTMO, POSTALCODE=t.POSTALCODE, STARTDATE=t.STARTDATE, STRUCNUM=t.STRUCNUM, STRSTATUS=t.STRSTATUS, TERRIFNSFL=t.TERRIFNSFL, TERRIFNSUL=t.TERRIFNSUL, UPDATEDATE=t.UPDATEDATE, NORMDOC=t.NORMDOC, COUNTER=t.COUNTER, CADNUM=t.CADNUM, DIVTYPE=t.DIVTYPE FROM fias_Houses dh INNER JOIN fias_Houses_Temp t ON t.HOUSEID=dh.HOUSEID WHERE h.HOUSEID=dh.HOUSEID; /****************************************************/ /*       */ /*       */ /* fias_DeletedHouses_temp */ /****************************************************/ DELETE FROM fias_Houses h WHERE EXISTS(SELECT 1 FROM fias_DeletedHouses_temp delh WHERE delh.HOUSEID=h.HOUSEID); /****************************************************/ /*       */ /*  fias_Houses,  */ /*    fias_Houses_Temp */ /****************************************************/ INSERT INTO fias_Houses(AOGUID,BUILDNUM,ENDDATE,ESTSTATUS,HOUSEGUID,HOUSEID,HOUSENUM,STATSTATUS,IFNSFL,IFNSUL,OKATO,OKTMO,POSTALCODE,STARTDATE,STRUCNUM,STRSTATUS,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,NORMDOC,COUNTER,CADNUM,DIVTYPE) SELECT AOGUID,BUILDNUM,ENDDATE,ESTSTATUS,HOUSEGUID,HOUSEID,HOUSENUM,STATSTATUS,IFNSFL,IFNSUL,OKATO,OKTMO,POSTALCODE,STARTDATE,STRUCNUM,STRSTATUS,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,NORMDOC,COUNTER,CADNUM,DIVTYPE FROM fias_Houses_Temp t WHERE NOT EXISTS(SELECT * FROM fias_Houses h WHERE t.HOUSEID=h.HOUSEID); /************************************/ /*    */ /************************************/ DROP TABLE IF EXISTS fias_DeletedHouses_temp; DROP TABLE IF EXISTS fias_Houses_temp; DROP TABLE IF EXISTS fias_EstateStatus_temp; DROP TABLE IF EXISTS fias_StructureStatus_temp; END; $$LANGUAGE plpgsql; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; SELECT (SELECT COUNT(*) FROM fias_Houses) AS HouseCount, (SELECT COUNT(*) FROM fias_EstateStatus) AS EStatusCount, (SELECT COUNT(*) FROM fias_StructureStatus) AS SStatusCount; 

Source: https://habr.com/ru/post/ar425287/


All Articles