मैं संबंधपरक डेटाबेस के साथ नौसिखिया हूँ। मेरे मुवक्किल ने डिफ़ॉल्ट रूप से विभिन्न क्षेत्रों वाले ग्राहकों की सूची मांगी। लेकिन स्कीमा में 8 अलग-अलग तालिकाओं की तरह हैं और मुझे प्रत्येक के लिए फ़ील्ड के साथ सूची बनाने की आवश्यकता है।

मैं इस तरह की एक क्वेरी को लागू करने की सोच रहा था।

SELECT name, surname, country_of_birth, nationality, email 
from clients,
     client_documents as documents,
     client_addresses as address

डुप्लिकेट फ़ील्ड हैं, लेकिन मुझे नहीं पता कि उसी uuid_client का उपयोग कैसे करें, यह प्रत्येक तालिका में विदेशी कुंजी है।

0
Stapler23 26 नवम्बर 2019, 06:51
1
क्या आप MySQL या Postgresql का उपयोग कर रहे हैं?'
 – 
jarlh
26 नवम्बर 2019, 11:44
आज की युक्ति: हमेशा आधुनिक, स्पष्ट JOIN वाक्य रचना का प्रयोग करें। लिखने में आसान (त्रुटियों के बिना), पढ़ने और बनाए रखने में आसान, और जरूरत पड़ने पर बाहरी जुड़ाव में बदलने में आसान!
 – 
jarlh
26 नवम्बर 2019, 11:45
बीटीडब्ल्यू, टेबल में कॉलम होते हैं, फ़ील्ड नहीं।
 – 
jarlh
26 नवम्बर 2019, 11:46
वर्तमान क्वेरी में वास्तव में क्या गुम है?
 – 
Nico Haase
26 नवम्बर 2019, 11:47
जब कई तालिकाओं को शामिल किया जाता है, तो सभी स्तंभों को अर्हता प्राप्त करने के लिए यह अच्छा प्रोग्रामिंग अभ्यास है, उदा। केवल name के बजाय clients.name
 – 
jarlh
26 नवम्बर 2019, 11:47

3 जवाब

आप join और छोटी तालिका aliases का उपयोग कर सकते हैं, इसलिए आपके लिए इसे columns शामिल करना आसान होगा।

select t1.name
    , t1.surname
    , t1.country_of_birth
    , t1.nationality
    , t1.email 
    , t2.documents
    , t3.city
from clients t1
inner join client_documents t2 on t1.uuid_client = t2.uuid_client
inner join client_addresses t3 on t1.uuid_client = t3.uuid_client
0
Ed Bangga 26 नवम्बर 2019, 06:58
TS को चुने हुए टेबल उपनामों को सिखाएं जो समझ में आता है, जैसे c clients आदि के लिए।
 – 
jarlh
26 नवम्बर 2019, 11:49
ठीक है, मैं ए, बी, सी की तुलना में इसका उपयोग करने में अधिक सहज हूं, ऑर्डर, ऑर्डर विवरण, ऑर्डर सारांश कहें, इसलिए टी 1, टी 2, टी 3 के विपरीत, संक्षेप में अतिरिक्त पत्र की आवश्यकता होगी, मुझे पता है कि मेरी पहली तालिका टी 1 है, दूसरी तालिका में शामिल हों t2..etc...'
 – 
Ed Bangga
26 नवम्बर 2019, 11:51
SELECT name, surname, country_of_birth, nationality, email 
from clients, client_documents as documents, client_addresses as address

उपरोक्त क्वेरी से ऐसा लगता है कि आपको तालिकाओं में शामिल होने की आवश्यकता है। लेकिन आपने शेष तालिकाओं में से किसी भी फ़ील्ड का उल्लेख नहीं किया है। इसलिए, यदि आपके पास इन तालिकाओं में कोई सामान्य फ़ील्ड है तो joins का उपयोग करना संभव है

या फिर आप UNION का उपयोग करके भी देख सकते हैं। कृपया अपने प्रश्न का विस्तार करें। ताकि मैं इसका सही उत्तर दे सकूं

0
DineshDB 26 नवम्बर 2019, 07:27

इसे हल करने का एक तरीका JOIN का उपयोग करना है। उदाहरण के लिए :

SELECT clients.name, clients.surname, address.country_of_birth, clients.nationality, clients.email 
FROM clients clients 
LEFT JOIN client_documents AS documents on clients.id = documents.client_id
LEFT JOIN client_addresses AS address on clients.id = address.client_id

मैं इस मामले के लिए बाएं शामिल होने का सुझाव देता हूं, क्योंकि यदि हम (INNER) जॉइन का उपयोग करते हैं तो आप ग्राहकों को पता या दस्तावेज़ीकरण जानकारी नहीं देख सकते हैं। इसलिए हमने लेफ्ट जॉइन का इस्तेमाल किया, लेकिन जैसा कि मैंने कहा कि चुनाव आपके परिदृश्य पर निर्भर करता है।

0
berkancetin 26 नवम्बर 2019, 09:55