मेरा मतलब है कि मेरे पास एक टेबल है

table1
idbook idauthor  title     magazine
 1       NULL   title_1   magazine_1
 2        2     title_2   magazine_2

और दुसरी

table2
idauthor   name     surname
   1      name_1   surname_1
   2      name_2   surname_2

और मैं एक प्रश्न लिखना चाहता हूं जो तालिका 1 को अद्यतन करता है और शीर्षक 1 के लिए 'idauthor' मान सेट करता है, जैसा कि name_1 के साथ तालिका 2 में 'idauthor' के समान है।

यह कैसा दिखेगा?या यह संभव नहीं है?

कैसे

0
Артём Царионов 10 मार्च 2012, 00:24

2 जवाब

सबसे बढ़िया उत्तर

दरअसल, सामान्य कॉलम idauthor है, इसे एक विदेशी कुंजी के रूप में माना जा सकता है। लेकिन चूंकि तालिका 2 के साथ तालिका 1 की पंक्ति का मिलान करने का कोई तरीका नहीं है, इसलिए आपको एक गंदा अद्यतन विवरण करना होगा, जो केवल ऊपर दिए गए उदाहरण के लिए काम करेगा, न कि अन्य परिदृश्यों के लिए।

UPDATE table1 SET idauthor = (SELECT idauthor FROM table2 WHERE name LIKE "name_1" AND surname LIKE "surname_1") WHERE idauthor ISNULL;

यह क्वेरी उन सभी तालिका 1 की पंक्तियों को अपडेट करेगी जिनका idauthor कॉलम में NULL मान है, और इसे उस पर सेट करें जिसे आप name_1 और उपनाम_1 के साथ खोज रहे हैं।

0
Overkillica 10 मार्च 2012, 00:41

मुझे table1 और table2 के बीच मेल खाने वाला कॉलम नहीं दिख रहा है, मुझे लगता है कि इस उदाहरण में कुछ कमी है। लेकिन मैं यह मानकर लिखूंगा कि table2 में एक कॉलम idbook है जो table1 से मेल खाता है।

update table1, table2
set table1.idauthor = table2.idauthor
where table1.idbook = table2.idbook

यदि आपके पास मेल खाने वाला कॉलम (या कॉलम) नहीं है, तो नहीं, आप अपडेट नहीं कर सकते।

0
Jay Otterbein 10 मार्च 2012, 00:30