2010-07-16 49 views

Trả lời

19

Vâng, sử dụng một UNION -

CREATE VIEW vw_combined AS 
    SELECT * FROM TABLE1 
    UNION ALL 
    SELECT * FROM TABLE2 

... đòi hỏi rằng có thể cùng một số cột, và trận đấu kiểu dữ liệu tại từng vị trí.

..preferrably, sử dụng lệnh JOIN:

CREATE VIEW vw_combined AS 
    SELECT * 
    FROM TABLE1 t1 
    JOIN TABLE2 t2 ON t2.col = t1.col 

Nhưng tôi muốn cảnh báo chống lại tùy thuộc vào quan điểm - nếu không muốn nói cụ thể hóa, họ chỉ chuẩn bị câu lệnh SQL. Không có lợi ích hiệu suất và có thể tác động tiêu cực đến hiệu suất nếu bạn xây dựng chế độ xem dựa trên một chế độ xem khác. Ngoài ra, lượt xem rất dễ vỡ - chúng có thể thay đổi và bạn sẽ không biết cho đến khi sử dụng chế độ xem hỗ trợ nếu có vấn đề.

+3

"thích hợp hơn, bằng cách sử dụng JOIN" Chỉ khi đáp ứng các yêu cầu. Tôi không thấy một ngụ ý rằng các hàng trong table1 và table2 có liên quan trong cách một phép nối sẽ có ý nghĩa. OP đã tuyên bố: "có cùng các trường" để công đoàn sẽ hoạt động nếu các loại khớp với nhau. –

+1

@Shannon Mức độ nghiêm trọng: Tôi không thấy tác hại trong việc đề xuất đánh giá logic hoặc cung cấp thêm thông tin có thể hữu ích. –

+4

Tôi đồng ý sẽ tốt khi đề cập đến việc tham gia, bởi vì có hai cách để kết hợp hai bảng làm cho kết quả dài hơn hoặc rộng hơn các bảng một mình. (1 cho rằng BTW.) Tôi chỉ không nghĩ rằng một là thích hợp với người khác mà không biết chắc chắn những gì OP đang cố gắng để làm. –

1
create or replace view view_name as 
select * from table_1 
union all select * from table_2 

Lưu ý: Các cột trong giao diện được thiết lập tại thời điểm xem được tạo ra. Thêm cột vào bảng_1 và bảng_2 sau khi tạo chế độ xem sẽ không hiển thị trong view_name. Bạn sẽ cần phải chạy lại DDL ở trên để có được các cột mới hiển thị.

Nếu bạn muốn lặp lại hàng để được collasped đến hàng đơn (nhưng công việc có khả năng nhiều hơn cho máy chủ):

create or replace view view_name as 
select * from table_1 
union select * from table_2 

Nói chung nó là hình thức xấu để sử dụng * trong danh sách lựa chọn, nhưng giả định rằng các truy vấn bằng cách sử dụng khung nhìn sẽ chỉ chọn những gì họ cần, tôi sẽ sử dụng nó ở đây thay vì đặt tên rõ ràng tất cả các cột. (Đặc biệt vì tôi không muốn phải thêm tên cột khi table_1 và table_2 thay đổi.)

+0

+1: Tôi đã quên đề cập đến các cột khi tạo ra –

+0

@OMG Ngựa vằn: Điều đó gần đây tôi, nó mới mẻ trong các ngân hàng bộ nhớ. –

Các vấn đề liên quan