संघ वह नहीं है जो आप चाहते हैं। आप एकल पंक्तियों को बनाने के लिए जॉइन का उपयोग करना चाहते हैं। यह थोड़ा अस्पष्ट है कि आपकी तालिकाओं में एक अद्वितीय पंक्ति क्या है और वे वास्तव में एक-दूसरे से कैसे संबंधित हैं और यह भी स्पष्ट नहीं है कि प्रत्येक वर्ष में प्रत्येक देश के लिए एक तालिका में पंक्तियाँ होंगी या नहीं। लेकिन मुझे लगता है कि यह काम करेगा:
CREATE VIEW V AS (
SELECT i.country,i.year,p.pop,f.food,i.income FROM
INCOME i
LEFT JOIN
POP p
ON
i.country=p.country
LEFT JOIN
Food f
ON
i.country=f.country
WHERE
i.year=p.year
AND
i.year=f.year
);
बाएँ (बाहरी) जुड़ाव पहली तालिका से पंक्तियाँ लौटाएगा, भले ही दूसरे में कोई मिलान न हो। मैंने इसे यह मानकर लिखा है कि आय तालिका में हर साल हर देश के लिए आपके पास एक पंक्ति होगी। यदि आपको चीजें थोड़ी बालों वाली नहीं होती हैं क्योंकि MySQL ने FULL OUTER JOINs के लिए समर्थन में नहीं बनाया है, पिछली बार मैंने जाँच की थी। इसे अनुकरण करने के तरीके हैं, और वे संघों को शामिल करेंगे। यह लेख इस विषय पर कुछ गहराई में जाता है:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/