2016-04-12 35 views
1

tablolar arasında var:gruplarına göre Görüntüleme ve İki tablo var

:

T1

Col1 Col2 
A  1 
A  2 
A  2 
B  2 
C  3 
D  4 
D  4 

T2 aşağıdaki dayalı iki görünüm oluşturmak isteyen

Col1 Col2 
A  2 
B  2 
C  4 

Burada Col1 ve Col2 t2'den t1'e birer kez var

t2 den Col1 ve Sütun2 t1 var

kereden fazla

Bunun

Beklenen çıkış

görünüm 1

Col1 Col2 
B  2 

Görünüm 2

Col1 Col2 
A  2 

olurdu Ben nasıl Bunu başarmak için gitmek?

Tablo komut:

create table t1 (col1 varchar2(1), col2 varchar2(2)); 
create table t2 (col1 varchar2(1), col2 varchar2(2)); 
insert into t1 values ('A',1); 
insert into t1 values ('A',2); 
insert into t1 values ('A',2); 
insert into t1 values ('B',2); 
insert into t1 values ('C',3); 
insert into t1 values ('D',4); 
insert into t1 values ('D',4); 
insert into t2 values ('A',2); 
insert into t2 values ('B',2); 
insert into t2 values ('C',4); 

cevap

2

Sen col1 gerçekleşme sayısı sayar t2 gelen toplu bir sorguyu t2 katılabileceğini:

CREATE VIEW view1 AS 
SELECT t2.* 
FROM t2 
JOIN (SELECT col1, col2 
     FROM  t1 
     GROUP BY col1 
     HAVING COUNT(*) = 1) c ON t2.col1 = c.col1 AND t2.col2 = c.col2; 

CREATE VIEW view2 AS 
SELECT t2.* 
FROM t2 
JOIN (SELECT col1, col2 
     FROM  t1 
     GROUP BY col1 
     HAVING COUNT(*) > 1) c ON t2.col1 = c.col1 AND t2.col2 = c.col2; 
+0

görünümü 1 için çıkış C B \t olduğunu 2 .... C 4 kaydını istemiyorum (T2'de bir kez var, ancak T1'de görünmüyor bu yüzden görünmemelidir) –

+0

@bobdylan C kaydı T1'de var Sağladığınız komut dosyalarına rding yaparak, bu mantıkla view1'de olması gerekir. – Mureinik

+0

C4 T1'de değil, T2'de. –