ኮምፒውተሮች, ፕሮግራም
አንድ ምሳሌ, ዝርዝር መግለጫ, ስህተቱ መጠቀም - ግራ (SQL) መቀላቀል
ማንኛውም እውነተኛ ግንኙነት ጎታ ውስጥ, ሁሉንም መረጃ በተለየ ጠረጴዛ ላይ የተሰራጨ ነው. የ ጠረጴዛዎች መካከል ብዙዎቹ እርስ በርስ ጋር ግንኙነት መርሃግብር ውስጥ በተቀመጠው ናቸው. እርዳታ ጋር ይሁን SQL መጠይቆችን አይደለም የወረዳ ውስጥ የተከተተ ውሂብ መካከል አገናኝ ማስቀመጥ በጣም ይቻላል. ይህ ሠንጠረዦች ማንኛውም ቁጥር መካከል ያለ ግንኙነት ለመገንባት, እና እንዲያውም ከሚያሳዩዋቸው መረጃ ለማገናኘት የሚያስችልዎ አንድ መቀላቀል ግንኙነት, በማከናወን እንዳደረገ ነው.
በግራ በውጨኛው መቀላቀል በተመለከተ ይህ ርዕስ በግልጽ መነጋገር ይሆናል. ግንኙነት የዚህ አይነት መግለጫ ጋር ከመቀጠልዎ በፊት, በአንዳንድ የውሂብ ጎታ ጠረጴዛዎች ላይ ለማከል.
አስፈላጊውን ሠንጠረዦች ማዘጋጀት
ለምሳሌ ያህል, እኛ ጎታ ውስጥ, ሰዎች እና ሪል እስቴት መረጃ የለም. ህዝቦች (ሰዎች), ለሪል (ሪል ኢስቴት), Realty_peoples (ጠረጴዛ ግንኙነት, ሰዎች ምን ጀምሮ ንብረት ላገባች): ማጠቃለያ ሦስቱ ጠረጴዛዎች ላይ የተመሠረተ. በሕዝቡ ጠረጴዛዎች ላይ የተከማቸውን የሚከተለውን ውሂብ ማሰብ:
ህዝቦች | ||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን |
1 | Ivanova | ዳሪያ | B. | 07/16/2000 |
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 |
3 | Evgenin | አሌክሳንደር | Federovich | 04/30/1964 |
4 | Annina | ፍቅር | P. | 31.12.1989 |
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 |
ሪል እስቴት:
ለሪል | |
መታወቂያ | አድራሻ |
1 | Arkhangelsk, ul. Voronin, መ. 7, kv.6 |
2 | Arkhangelsk, ul. Severodvinskaya, መ. 84, ጥ. 9 BR. 5 |
3 | Arkhangelsk ክልል, Severodvinsk, ሴንት. ሌኒን, መ. 134, q. 85 |
4 | Arkhangelsk ክልል, Novodvinsk, ul. Proletarshaya, መ. 16, ጥ. 137 |
5 | Arkhangelsk, pl. Terekhina, መ. 89, ጥ. 13 |
ግንኙነት ሰዎች - ንብረት:
Realty_peoples | ||
id_peoples | id_realty | ዓይነት |
7 | 3 | ጠቅላላ የጋራ ባለቤትነት |
8 | 3 | ጠቅላላ የጋራ ባለቤትነት |
3 | 5 | ንብረት |
7 | 1 | ንብረት |
5 | 4 | የጋራ ክፍሎች |
6 | 4 | የጋራ ክፍሎች |
መቀላቀል (SQL) የግራ - መግለጫ
የግራ ውህድ የሚከተለውን አገባብ አለው:
| Table_A LEFT table_B [{ላይ ተሳቢው} ልካፈል ] {Tolbtsov ጋር spisok_ ሲጠቀሙ} |
እንዲሁም እንደሚከተለው schematically እንደ:
ይህ አገላለጽ "ሰንጠረዥ እና ሠንጠረዥ B መካከል መስመር ተሳቢ ብቻ ተዛማጅ ረድፎች ለማሳየት, ልዩ ያለ, ሁሉንም ምረጥ እንደ ተተርጉሟል ነው. ሰንጠረዥ ጥንድ አንድ ለ ሕብረቁምፊ ሠንጠረዥ ውስጥ አልተገኘም ነበር ከሆነ ባዶ ሳቢያ አምዶች እንዲሞሉ - እሴቶች ".
ወደ ግራ ግንኙነት ላይ ተመልክቷል ጊዜ ግንኙነት ለማድረግ የታቀደ ነው ይህም የአምድ ስሞች ተመሳሳይ ናቸው ወቅት አብዛኛውን ጊዜ ብቻ ጥቅም ላይ ውሏል በመጠቀም.
ግራ መቀላቀል - አጠቃቀም ምሳሌዎች
በስተግራ ያለውን ግንኙነት ጋር እኛ ከዝርዝሩ ሁሉ ሕዝብ ህዝቦች ንብረት በዚያ ከሆነ ማየት ይችላሉ. በግራ ውስጥ ይህን ማድረግ SQL መጠይቅ ለምሳሌ መቀላቀል:
ይምረጡ ህዝቦች. *, Realty_peoples.id_realty, Realty_peoples.type ህዝቦች LEFT ልካፈል ከ Realty_peoples ላይ Peoples.id = Realty_peoples.id_peoples; |
የሚከተሉትን ውጤቶች ጋር:
Query1 | ||||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን | id_realty | ዓይነት |
1 | Ivanova | ዳሪያ | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | አሌክሳንደር | Federovich | 04/30/1964 | 5 | ንብረት |
4 | Annina | ፍቅር | P. | 31.12.1989 | ||
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 | 4 | የጋራ ክፍሎች |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | የጋራ ክፍሎች |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 1 | ንብረት |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 3 | ጠቅላላ የጋራ ባለቤትነት |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 | 3 | ጠቅላላ የጋራ ባለቤትነት |
ብለን እንደምንመለከተው, Ivanova Darya Pugin Vladislav እና Anninoy Lyubovi ምንም የማይንቀሳቀስ ንብረት መብቶች ተመዝግቧል.
ምን እኛ አንድ ውስጣዊ ውስጣዊ ለመቀላቀል ለመቀላቀል በመጠቀም ተቀብለዋል ነበር? እንደሚታወቀው, ይህ ያልሆኑ ተዛማጅ ረድፎች አያካትትም; ስለዚህ የእኛ የመጨረሻ ናሙና ውጭ ሦስት በቀላሉ ሊያልፍ ነበር;
Query1 | ||||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን | id_realty | ዓይነት |
3 | Evgenin | አሌክሳንደር | Federovich | 04/30/1964 | 5 | ንብረት |
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 | 4 | የጋራ ክፍሎች |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | የጋራ ክፍሎች |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 1 | ንብረት |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 3 | ጠቅላላ የጋራ ባለቤትነት |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 | 3 | ጠቅላላ የጋራ ባለቤትነት |
ይህ ሁለተኛው ስሪት ደግሞ የእኛ ችግር ሁኔታዎች የሚያሟላ አይመስልም ነበር. ሆኖም ግን, እኛ እርስ ላይ ለማያያዝ ይጀምራሉ ከሆነ, እና ሌላ ጠረጴዛ, ውጤቱ እስከ ሦስት ሰዎች አስቀድመው በማትችልበት መንገድ ሄደዋል. ውስጣዊ ይልቅ በርካታ ሠንጠረዦች በማጣመር ጊዜ ስለዚህ በተግባር: ብዙ ጊዜ ጥቅም ላይ የግራ እና የቀኝ ግንኙነት መቀላቀል.
SQL ምሳሌዎች ለመቀላቀል ወደ ግራ መመልከት ይቀጥላሉ. የእኛን ቤቶች አድራሻዎች ጋር አንድ ሠንጠረዥ አያይዝ:
ይምረጡ ህዝቦች. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address ህዝቦች ከ LEFT Realty_peoples ላይ Peoples.id = Realty_peoples.id_peoples ልካፈል LEFT Realty.id = Realty_peoples.id_realty ላይ ለሪል ልካፈል |
አሁን እኛ ሕግ አንድ ዓይነት: ነገር ግን ደግሞ ሪል ኢስቴት አድራሻ ብቻ ያገኛሉ:
Query1 | |||||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን | id_realty | ዓይነት | አድራሻ |
1 | Ivanova | ዳሪያ | B. | 07/16/2000 | |||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | |||
3 | Evgenin | አሌክሳንደር | Federovich | 04/30/1964 | 5 | ንብረት | Arkhangelsk, pl. Terekhina, መ. 89, ጥ. 13 |
4 | Annina | ፍቅር | P. | 31.12.1989 | |||
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 | 4 | የጋራ ክፍሎች | Arkhangelsk ክልል, Novodvinsk, ul. Proletarshaya, መ. 16, ጥ. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | የጋራ ክፍሎች | Arkhangelsk ክልል, Novodvinsk, ul. Proletarshaya, መ. 16, ጥ. 137 |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 3 | ጠቅላላ የጋራ ባለቤትነት | Arkhangelsk ክልል, Severodvinsk, ሴንት. ሌኒን, መ. 134, q. 85 |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 1 | ንብረት | Arkhangelsk, ul. Voronin, መ. 7, kv.6 |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 | 3 | ጠቅላላ የጋራ ባለቤትነት |
Arkhangelsk ክልል, Severodvinsk, ሴንት. ሌኒን, መ. 134, q. 85 |
ግራ መቀላቀል - ስህተት ውስጥ የተለመደ አጠቃቀም: ልክ ያልሆነ ሂደት ሰንጠረዥ
በግራ በውጨኛው ላይ የተሠራ መሰረታዊ ስህተቶች ጠረጴዛዎች, ሁለት እንዲቀላቀሉ:
- በትክክል ውሂብ የጠፋውን ያህል ሠንጠረዦች ቅደም ተመርጧል.
- ስህተቶች ጋር መጠይቅ በመጠቀም ጊዜ የት ሰንጠረዦች መቀላቀል.
የመጀመሪያው ስህተት እንመልከት. ማንኛውም ችግር ውሳኔ በፊት በግልጽ እኛ መጨረሻ ላይ ማግኘት የሚፈልጉትን ነገር መሆኑን መረዳት ይገባል. ከላይ በዚህ ምሳሌ ውስጥ, ሰዎች ሁሉ ነጠላ አንድ ወሰደ, ነገር ግን ሙሉ በሙሉ የእርሱ ባለቤት አልተገኘም ቁጥር 2, በታች ያለውን ዕቃ ስለ መረጃ አጥተዋል.
እኛም በአንዳንድ ቦታዎች ውስጥ ጥያቄ ውስጥ ገበታዎች ተንቀሳቅሷል, እና መጀመር ነበር «... ለሪል ... ህዝቦች መቀላቀል ከግራ» ማንኛውም ሰው ንብረት ከሆነ, እኛ ሰዎች ስለ መናገር አይችሉም, የጠፉ ሊሆን አይችልም ነበር.
ነገር ግን, በግራ ግንኙነት አትፌራ ውጤት እና ተዛማጅ: ሳይሆን ተዛማጅ መስመሮች ውስጥ የተካተተ ነው; ይህም ሙሉ ውጫዊ መቀየር አይደለም.
ሁሉም በኋላ ናሙና መጠን ብዙውን ጊዜ በጣም ትልቅ ነው, እና ተጨማሪ ውሂብ እንዲያውም ከንቱ ነው. ዋናው ነገር - እርስዎ ውጤት ማግኘት የሚፈልጉትን ነገር እንደሆነ ማወቅ: ሁሉም ሰዎች ያላቸውን የሚገኝ ንብረት ዝርዝር ወይም ባለቤቶች ጋር መላው ንብረት ዝርዝር (ካለ) ጋር.
ግራ መቀላቀል - ስህተት ውስጥ የተለመደ አጠቃቀም; ወደ የት ውስጥ ያለውን ሁኔታ ቅንብር ጊዜ ጥያቄ ትክክል ነው
ሁለተኛው ስህተት ደግሞ የውሂብ መጥፋት ጋር የተያያዘ ሲሆን ሁልጊዜ ወዲያውኑ ግልጽ አይደሉም ነው.
ግንኙነቶች ሁሉ ሕዝብ እና አሁን ያላቸውን ንብረት ውሂብ ደርሷል በኩል እኛ ግራ ጊዜ ዎቹ ለመጠይቁ ወደ ኋላ እንመለስ. ግራ SQL ምሳሌ የመቀላቀል ጋር የሚከተለውን አስታውስ:
ህዝቦች LEFT ልካፈል ከ Realty_peoples ላይ Peoples.id = Realty_peoples.id_peoples; |
እኛ ጥያቄውን ግልጽ ለማድረግ እፈልጋለሁ ሳይሆን ውጽዓት ውሂብ ነው እንበል የት ሕግ አይነት - "ንብረት". እኛ በቀላሉ ያያይዙ ከሆነ, SQL, የሚከተለውን ሁኔታ የሚያሳይ ምሳሌ መቀላቀል ይቀራል በመጠቀም:
...
የት አይነት <> "ንብረት" |
እኛም እንደሚከተለው ብዛቱ እሴት ባዶ ሲነጻጸር አይደለም ምክንያቱም ምንም ንብረት ያላቸው ሰዎች ላይ ያለውን ውሂብ ታጣለህ:
Query1 | ||||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን | id_realty | ዓይነት |
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 | 4 | የጋራ ክፍሎች |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | የጋራ ክፍሎች |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 3 | ጠቅላላ የጋራ ባለቤትነት |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 | 3 | ጠቅላላ የጋራ ባለቤትነት |
በዚህ ምክንያት በተከሰተ ከ ስህተቶች ለመከላከል, ይህ ግንኙነት ላይ ወዲያውኑ ምርጫ ሁኔታ ማዘጋጀት የተሻለ ነው. እኛ SQL ምሳሌ የመቀላቀል ወደ ግራ ጋር የሚከተሉትን ከግምት ይጠቁማሉ.
ይምረጡ ህዝቦች. *, Realty_peoples.id_realty, Realty_peoples.type ህዝቦች ከ LEFT Realty_peoples ተቀላቀል (Peoples.id = Realty_peoples.id_peoples እና አይነት <> "ንብረት") |
እንደሚከተለው ውጤት ይሆናል:
Query1 | ||||||
መታወቂያ | L_name | F_name | Middle_name | የልደት ቀን | id_realty | ዓይነት |
1 | Ivanova | ዳሪያ | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | አሌክሳንደር | Federovich | 04/30/1964 | ||
4 | Annina | ፍቅር | P. | 31.12.1989 | ||
5 | Gerasimovsky | ተስፋ | P. | 14.03.1992 | 4 | የጋራ ክፍሎች |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | የጋራ ክፍሎች |
7 | Sukhanovskaya | ዳኞች | ሀ | 09/25/1976 | 3 | ጠቅላላ የጋራ ባለቤትነት |
8 | Sukhanovskaya | ጁሊያ | ሃያሺ | 01.10.2001 | 3 | ጠቅላላ የጋራ ባለቤትነት |
የ SQL ምሳሌ ለመቀላቀል ወደ ግራ ወደ ቀላል በመከተል በመሆኑም, እኛ ተጨማሪ መንቀሳቀስ, ሁሉ ሰዎች ዝርዝር ተቀበሉ, አንድ የፍትሃዊነት / የጋራ ባለቤትነት እነዚህን ንብረቶች አንዱ.
አንድ መደምደሚያ እንደ እኔ እንደገና ጎታ ማንኛውም መረጃ ናሙና ኃላፊነት መወሰድ አስፈላጊ መሆኑን ለማጉላት እፈልጋለሁ. በግራ ጋር ፊት ለፊት ተከፈተ በርካታ የድምፁን SQL ቀላል ምሳሌ መቀላቀል, ማብራሪያውም ይህም አንዱ - አንተ እንኳ መሠረታዊ ጥያቄ መጻፍ ከመጀመሩ በፊት, በጥንቃቄ እኛ መጨረሻ ላይ ማግኘት የሚፈልጉትን ነገር መረዳት አለብን. መልካም ዕድል!
Similar articles
Trending Now