2.5.6. एक टेबल पर प्रश्न

कई बार हम अलग मेज से स्तंभों के संयोजन के द्वारा एक से अधिक तालिका से डेटा देखें. SQL में संभव है कि खंड से अधिक सूची में एक तालिका में निर्दिष्ट क्वेरी के लिए आप चाहते हैं.

एक युग्म)

याद रखें कि आपरेशन में एक ही संयोजन है, लेकिन संबंधपरक बीजगणित, यह 5.3.3 उपखण्ड में देखा गया है. इकाई "संबंधपरक मॉडल और संबंधपरक बीजगणित"

संयोजन धारा से है विनिर्दिष्ट तालिकाओं में एकल तालिका से सक्षम बनाने के लिए, तालिका में इन स्तंभों के संबंधित मूल्यों के मिलान.

उदाहरण के संयोजन BDUOC

यहां 20 है एक उदाहरण BDUOC में डेटाबेस जिसमें संख्या है जिसे आप ग्राहक चाहते पता करने के लिए ग्राहक और के लिए विकसित टैक्स कोड और हम परियोजना लागत में से एक:

proyectos.codigo_proyecto चुनें proyectos.precio, clientes.nif
से ग्राहकों, परियोजनाओं
कहां और = clientes.codigo_cli proyectos.codigo_cliente ग्राहकों.
20 = codigo_cli;

परिणाम होगा:

proyectos.codigo_proyecto

proyectos.precio
clientes.nif

3
1.000.000
38123898 ई

यदि आप एक से अधिक तालिका के साथ काम करते हैं, आप पा सकते हैं कि परिणाम तालिका में एक ही नाम के साथ दो कॉलम है.इसलिए यह उल्लेख है कि हम अनिवार्य निर्दिष्ट करने के लिए जो जो करने के लिए तालिका स्तंभ अनुरूप) नामकरण की मेज पर जो clientes.codigo_cli जैसे वे संबंधित से पहले उन्हें (. सादगी के लिए, हम उर्फ का उपयोग, के मामले में इस खंड में हैं परिभाषित.

उदाहरण BDUOC उर्फ

सी मेज ग्राहकों का उपनाम किया जा सकता है.इस प्रकार इंगित करने के लिए, तालिका जो codigo_cli अंतर्गत आता है, रखा जाएगा करने के लिए केवल जरूरत है: c.codigo_cli.

चलो देखते हैं कि कैसे ऊपर क्वेरी का उपयोग कर उपनाम व्यक्त किया जाएगा, लेकिन इस उदाहरण में आवश्यक नहीं है, क्योंकि दो तालिकाओं के सभी स्तंभों के अलग अलग नाम होता. कॉलम पूछो भी c.codigo_cli और p.codigo_cliente.

चुनें p.codigo_proyecto, p.precio, c.nif, p.codigo_cliente, c.codigo_cli
ग से ग्राहकों, परियोजनाओं पी
कहां और c.codigo_cli = 20 = p.codigo_cliente c.codigo_cli;

तब हम इस परिणाम होगा करने के लिए:

p.codigo_proyec
p.precio
c.nif
p.codigo_cliente
c.codigo_cli

3
1.000.000
38123898 ई
20
20


कोड नोट में उस वर्ग कहां हैं और जरूरत codigo_cli स्थापित लिंक करने के लिए व्यक्त ग्राहक के बीच मामला दो तालिकाओं में इस
परियोजनाओं का संचालन ent बीजगणित संबंधपरक. एक्सप्रेस्ड में, इस का मतलब है कि हम उत्पाद कर काटीज़ियन एक के एक में शामिल होने के बजाय.

संबंधपरक बीजगणित आपरेशनों "बीजगणित है और संबंधपरक मॉडल संबंधपरक गया में पैरा 5 में इकाई"


सूचना है कि, बीजगणित संबंधपरक के रूप में, बस संचालन किया स्तंभों में शामिल है एक equicombinación (सम-), और इसलिए बनाया दो समान: c.codigo_cli और p.codigo_cliente.

देखा हम उस रास्ते से व्यक्त संयोजन SQL92 परिचयात्मक अंतर्गत आता है के लिए.एक वैकल्पिक तरीका पिछले मध्यवर्ती या पूर्ण SQL92 उपयोग equicombinación, किया जाएगा करने के लिए:

चुनें nombre_columnas_a_seleccionar
table1 से तालिका 2 में शामिल हों
{शर्त पर | (स्तंभ [का उपयोग कर, स्तंभ ...])}
[शर्तों कहां];

पूर्ण SQL92 या पिछला उदाहरण के साथ मध्यवर्ती

पूर्ण किया जाएगा मध्यवर्ती SQL92 का उपयोग करके उपरोक्त चर्चा उदाहरण:

चुनें p.codigo_proyecto, p.precio, c.nif, p.codigo_cliente, c.codigo_cli
ग्राहकों से ग c.codigo_cli पर परियोजना पी शामिल हों = p.codigo_cliente
कहां c.codigo_cli 20 =;

और एक ही परिणाम के रूप में पहले मिलता है.

EMJD देखने equicombinación और 5.3.3 में उपखण्ड संयोजन-O.इकाई "संबंधपरक मॉडल और संबंधपरक बीजगणित"

विकल्प पर, और साथ बराबरी व्यक्त की, यदि आप स्तंभ नामों को अलग करना चाहते हैं कड़ी है, समानता हमें देता है की तुलना में अन्य ऑपरेटरों की तुलना में अन्य के रूप में संभावना व्यक्त की स्थिति. ) में शामिल होने या चाहेंगे होना बराबर करने के लिए संबंधित है हम बीजगणित ऑपरेशन है कि कहा जाता हे ​​संयोजन (.

में BDUOC मेज के लिए एक उर्फ दो

अगर pidiésemos कोड और, 5 नामों का कोड है कर्मचारियों को जो कमाते जो अधिक से अधिक कर्मचारी संख्या निम्नलिखित होता है:

चुनें p.codigo_proyecto, p.precio, c.nif, p.codigo_cliente, c.codigo_cli
ग्राहकों से ग c.codigo_cli पर परियोजना पी शामिल हों = p.codigo_cliente
कहां c.codigo_cli 20 =;

हम टेबल लिया के लिए n तय पंक्ति कर्मचारी e2 है डेस्कटॉप खोज कोडऔर, संख्या 5 है, तो
हम e2 तालिका है, जो केवल 5 कर्मचारी शामिल की वेतन के साथ E1 मेज है, जो सभी कर्मचारियों के वेतन शामिल है, की तुलना कर सकते हैं.

इस प्रश्न का जवाब होगा:

e1.codigo_empl
e1.apellido_empl

1

Puig

2

अधिक

3

Ros

4

Roca

 

2 संयोजन) प्राकृतिक

संयोजन के प्राकृतिक (प्राकृतिक जुड़ने) मूल रूप से दो तालिकाओं के होते हैं, बीजगणित संबंधपरक रूप में, नाम उसी के स्तंभों के बीच equicombinación में बनाने के लिए एक और स्तंभ हटाना सब.प्राकृतिक संयोजन, मध्यवर्ती या पूर्ण SQL92 उपयोग करते हुए, इस प्रकार होगा:

चुनें nombre_columnas_a_seleccionar
table1 से प्राकृतिक तालिका 2 में शामिल हों
[शर्तों कहां];

प्राकृतिक संयोजन BDUOC

एक उदाहरण है जिसमें स्तंभ है जिसके लिए प्राकृतिक संयोजन दोनों तालिकाओं में ही कहा जा होगा पर देखें.अब हम कोड और कर्मचारियों को जो विभाग किसका फोन है 977.33.38.52 करने के लिए आवंटित कर रहे हैं का नाम पता है:

codigo_empl का चयन करें, nombre_empl
कर्मचारियों से विभागों शामिल हों प्राकृतिक
कहां फोन = '977 .333.852 ';

प्राकृतिक संयोजन का उपयोग कर सकते हैं खंड के साथ भी किया जाना है, केवल खोजशब्द का उपयोग शामिल हों:

codigo_empl का चयन करें, nombre_empl
से कर्मचारियों को विभागों का उपयोग करना (nombre_dep, ciudad_dep) शामिल हों
कहां फोन = '977 .333.852 ';

जवाब होगा:

empleados.codigo_empl

empleados.nombre_empl

5

क्लारा

6

लौरा

8

सर्जियो

 

 
3 संयोजन) आंतरिक और बाह्य

किसी भी संयोजन के आंतरिक या बाह्य जा सकता है:

क) भीतरी) में शामिल हो (आंतरिक जुड़ने तुलना हो जाता है केवल उन पंक्तियों को स्तंभों की समान मूल्यों में है कि टेबल.इस संयोजन के लिए कर सकते हैं की पंक्ति में से एक दिलचस्प कुछ कारण हमारे पास खोने के लिए, तालिकाएँ दो उदाहरण हैं, क्योंकि एक बना समय में रिक्त एक यह है. इसका प्रारूप इस प्रकार है:

चुनें nombre_columnas_a_seleccionar
T1 से [प्राकृतिक] [अंदरूनी] टी 2 शामिल हों
{शर्त पर |
| का प्रयोग (स्तंभ [, स्तंभ ...])}
[शर्तों कहां];

ख) इसलिए हम बाहरी है) में शामिल हो (बाह्य शामिल हो, जो टेबल की अनुमति देता से सभी मूल्यों को प्राप्त करने के लिए हमें मेज है कि दो हम है ना, हम उस तालिका है मानों के छोड़ दिया है या सभी.इसका प्रारूप है:

चुनें nombre_columnas_a_seleccionar
से T1 [प्राकृतिक] [बायाँ | अधिकार | पूर्ण] [बाहरी] टी 2 शामिल हों
{शर्त पर |
[का उपयोग (स्तंभ [, स्तंभ ...])}
[शर्तों कहां];

घरेलू प्राकृतिक संयोजन BDUOC

भीतरी जुड़ने

उदाहरण यद्यपि हम प्राकृतिक संयोजन कर रहे हैं बनाने के लिए एक घरेलू, यह, भीतर है डाल करने के लिए आवश्यक शब्द के बाद से यह डिफ़ॉल्ट है.

अगर Kishi औरeacute, एक प्राकृतिक संयोजन के साथ शाखाओं आंतरिक कर्मचारियों और तालिकाएँ जोड़ने के लिए
विभागों कोड और सभी कर्मचारियों और नाम शहर है, और सभी विभागों के फोन नंबर, होगा का नाम पता करने के लिए:

चुनें e.codigo_empl, e.nombre_empl, e.ciudad_dep e.nombre_dep, d.telefono
से कर्मचारियों को ई डी विभागों शामिल हों प्राकृतिक;

और परिणाम प्राप्त निम्नलिखित:

e.codigo_empl
e.nombre_empl
e.nombre_dep
e.ciudad_dep
d.teléfono

1
मैरी
DIR
Girona
972.23.89.70

2
पेड्रो
DIR
बार्सिलोना
93.422.60.70

3
एना
जिले
Lleida
973.23.50.40

4
जॉर्ज
जिले
बार्सिलोना
93.224.85.23

5
ठेला
तारागोना
977.33.38.52

6
लौरा
ठेला
तारागोना
977.33.38.52

8
सर्जियो
ठेला
तारागोना
977.33.38.52

 

सूचना है कि परिणाम Girona विभाग करता है दिखाने के लिए नहीं प्रोग्रामिंग या कर्मचारी संख्या, 7, जो कि किसी भी विभाग सौंपा नहीं,नहीं सौंपा कर्मचारी हैं.

बाहरी प्राकृतिक संयोजन BDUOC

हम निम्न उदाहरण में देखेंगे कि कैसे परिणामों के प्रकार के अनुसार अलग अलग होंगे हो रहा है जो हम करने के लिए बाहरी में शामिल होने:

एक) बाहरी वाम जुड़ें

चुनें e.codigo_empl, e.nombre_empl, e.ciudad_dep e.nombre_dep, d.telefono
से कर्मचारियों को ई प्राकृतिक बायाँ बाहरी घ विभागों शामिल हों;

वाम बाहरी जुड़ें

यहाँ fighura सात कर्मचारी.

परिणाम यह होगा कि हम नीचे देख सकते हैं:
<
/ Span>

e.codigo_empl

e.nombre_emple

e.nombre_dep
e.ciudad_dep
d.telefono

1
मैरी
DIR
Girona
972.23.89.70

2
पेड्रो
DIR
बार्सिलोना
93.422.60.70

3
एना
जिले
Lleida
973.23.50.40

4
जॉर्ज
जिले
बार्सिलोना
93.224.85.23

5
क्लारा
ठेला
तारागोना
977.33.38.52

6
लौरा
ठेला
तारागोना < br / 977.33.38.52>

7
Rogelio
रिक्त
रिक्त
रिक्त

8
सर्जियो
ठेला
तारागोना
977.33.38.52


ख) सही हों आउटर

चुनें e.codigo_empl, e.nombre_empl, e.ciudad_dep e.nombre_dep, d.telefono
से कर्मचारियों को ई प्राकृतिक अधिकार बाहरी विभागों शामिल हों d;

ndent1 ">

सही में शामिल होने के बाहरी

इस विभाग से पता चलता है प्रोग्रामिंग घ

हम परिणाम यह होगा मिल:

e.codigo_empl

e.nombre_emple

e.nombre_dep
e.ciudad_dep
d.telefono

1
मैरी
DIR
Girona
972.23.89.70

2
पेड्रो
DIR
बार्सिलोना
93.422.60.70

3
एना
जिले
Lleida
973.23.50.40

4
जॉर्ज
जिले
बार्सिलोना
93.224.85.23

5
क्लारा
ठेला तारागोना
977.33.38.52

6
लौरा
ठेला
तारागोना
977.33.38.52

8
सर्जियो
ठेला
तारागोना
977.33.38.52

रिक्त
रिक्त
ठेला
Girona
9272.23.50.91


ग) पूर्ण बाहरी जुड़ें

चुनें e.codigo_empl, e.nombre_empl, e.ciudad_dep e.nombre_dep, d.telefono
से कर्मचारियों को ई प्राकृतिक फुल बाहरी घ विभागों शामिल हों;

बाहरी पूर्ण में शामिल

यहां कर्मचारी 7 आंकड़ा और विभाग के Girona प्रोग्रामिंग.

और परिणाम प्राप्त निम्नलिखित:

e.codigo_empl

e.nombre_emple

e.nombre_dep
चुनाव आयोगiudad_dep
d.telefono

4
जॉर्ज
जिले
बार्सिलोना
93.224.85.23

5
क्लारा
ठेला
तारागोना
977.33.38.52

6
लौरा
ठेला
तारागोना
977.33.38.52

7
रिक्त
रिक्त
रिक्त

8
सर्जियो
ठेला
तारागोना
977.33.38.52

रिक्त
रिक्त
ठेला
Girona
9272.23.50.91


दो से अधिक टेबल) युग्म 4 के साथ

अगर हम SQL92 परिचय के साथ तीन या अधिक तालिकाओं का गठबंधन है, हम बस में से है और आवश्यक संबंध में सभी तालिकाओं जोड़ने के लिए है जहाँ.अगर हम पूरा साथ मध्यवर्ती SQL92 गठबंधन, हम जोड़े में तालिकाओं का संयोजन करना है, और जिसके परिणामस्वरूप तालिका अगले जोड़ी का पहला घटक बन जाएगा.

BDUOC की तुलना में अधिक दो तालिकाओं के साथ युग्म

दोनों मामलों का उदाहरण देखें, यह सोचते हैं कि कर्मचारियों को ग्राहकों को चाहते हैं और शामिल होने के लिए तालिकाओं, परियोजनाओं:

* चुनें
से कर्मचारियों, परियोजनाओं, ग्राहकों
कहां और codigo_cliente codigo_proyec = codigo_cli num_proyec;


या:

* चुनें
से (num_proyec = codigo_proyec परियोजनाओं पर कर्मचारियों में शामिल हों)
codigo_cliente = codigo_cli पर ग्राहकों हों;