Công đoàn không phải là những gì bạn muốn. Bạn muốn sử dụng các phép nối để tạo các hàng đơn. Có một chút không rõ ràng về điều gì tạo nên một hàng duy nhất trong các bảng của bạn và chúng thực sự liên quan với nhau như thế nào và cũng không rõ liệu một bảng sẽ có các hàng cho mọi quốc gia trong mỗi năm hay không. Nhưng tôi nghĩ điều này sẽ hiệu quả:
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
);
Phép nối bên trái (bên ngoài) sẽ trả về các hàng từ bảng đầu tiên ngay cả khi không có hàng nào phù hợp trong bảng thứ hai. Tôi đã viết điều này giả sử bạn sẽ có một hàng cho mọi quốc gia cho mỗi năm trong bảng thu nhập. Nếu bạn không làm mọi thứ trở nên hơi rắc rối vì MySQL không tích hợp sẵn hỗ trợ cho FULL OUTER JOINs lần cuối tôi đã kiểm tra. Có nhiều cách để mô phỏng nó, và chúng sẽ liên quan đến các công đoàn. Bài viết này đi sâu vào chủ đề:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/