ኮምፒውተሮችፕሮግራም

አንድ ምሳሌ, ዝርዝር መግለጫ, ስህተቱ መጠቀም - ግራ (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

ግራ መቀላቀል - ስህተት ውስጥ የተለመደ አጠቃቀም: ልክ ያልሆነ ሂደት ሰንጠረዥ

በግራ በውጨኛው ላይ የተሠራ መሰረታዊ ስህተቶች ጠረጴዛዎች, ሁለት እንዲቀላቀሉ:

  1. በትክክል ውሂብ የጠፋውን ያህል ሠንጠረዦች ቅደም ተመርጧል.
  2. ስህተቶች ጋር መጠይቅ በመጠቀም ጊዜ የት ሰንጠረዦች መቀላቀል.

የመጀመሪያው ስህተት እንመልከት. ማንኛውም ችግር ውሳኔ በፊት በግልጽ እኛ መጨረሻ ላይ ማግኘት የሚፈልጉትን ነገር መሆኑን መረዳት ይገባል. ከላይ በዚህ ምሳሌ ውስጥ, ሰዎች ሁሉ ነጠላ አንድ ወሰደ, ነገር ግን ሙሉ በሙሉ የእርሱ ባለቤት አልተገኘም ቁጥር 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

 

 

 

 

Newest

Copyright © 2018 am.delachieve.com. Theme powered by WordPress.