Aynı sütun adlarına (nesil, üst) sahip iki tabloya (tablo1, tablo2) sahip olmak, istenen çıktı her iki tablonun tüm sütunlarının birleşimi olacaktır. Böylece, tablo2 satırları tablo1'e katılmalı, böylece tablo2 satırları tablo1'in üretim sütunundakilerle eşleşmelidir. Üst numara, tablo1'deki ve tablo2'deki girişler için artan olarak sıralanmalıdır. Sorgu sonuçlarının satır sayısı tablo1'in satırlarına eşit olmalıdır.
Aşağıdaki tablolar göz önüne alındığında
tablo1:
| generation | parent |
|:----------:|:------:|
| 0 | 1 |
| 0 | 2 |
| 0 | 3 |
| 1 | 3 |
| 1 | 2 |
| 1 | 1 |
| 2 | 2 |
| 2 | 1 |
| 2 | 3 |
tablo2:
| generation | parent |
|:----------:|:------:|
| 1 | 3 |
| 1 | 1 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
Yukarıda gösterildiği gibi iki örnek tablo oluşturmak ve doldurmak için aşağıdaki sorgular düşünülür:
create table table1(generation integer, parent integer);
insert into table1 (generation, parent) values(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(2,2),(2,1),(2,3);
create table table2(generation integer, parent integer);
insert into table2 (generation, parent) values(1,3),(1,1),(1,3),(2,1),(2,2),(2,3);
hayal edilen sorgu aşağıdaki istenen sonuca yol açmalıdır:
| table1_generation | table1_parent | table2_generation | table2_parent |
|:-----------------:|:-------------:|:-----------------:|:-------------:|
| 0 | 1 | | |
| 0 | 2 | | |
| 0 | 3 | | |
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 3 |
| 1 | 3 | 1 | 3 |
| 2 | 1 | 2 | 1 |
| 2 | 2 | 2 | 2 |
| 2 | 3 | 2 | 3 |
Geçerli sorgu aşağıdaki gibi görünür:
with
p as (
select
generation,
parent
from
table1
order by
generation,
parent
), o as(
select
generation,
parent
from
table2
order by
generation,
parent
)
select
p.generation as table1_generation,
p.parent as table1_parent,
o.generation as table2_generation,
o.parent as table2_parent
from
p
left join o on
o.generation=p.generation;
Bu da aşağıdaki sonuca yol açar:
| table1_generation | table1_parent | table2_generation | table2_parent |
|:-----------------:|:-------------:|:-----------------:|:-------------:|
| 0 | 1 | | |
| 0 | 2 | | |
| 0 | 3 | | |
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 3 |
| 1 | 1 | 1 | 3 |
| 1 | 2 | 1 | 1 |
| 1 | 2 | 1 | 3 |
| 1 | 2 | 1 | 3 |
| 1 | 3 | 1 | 1 |
| 1 | 3 | 1 | 3 |
| 1 | 3 | 1 | 3 |
| 2 | 1 | 2 | 1 |
| 2 | 1 | 2 | 2 |
| 2 | 1 | 2 | 3 |
| 2 | 2 | 2 | 1 |
| 2 | 2 | 2 | 2 |
| 2 | 2 | 2 | 3 |
| 2 | 3 | 2 | 1 |
| 2 | 3 | 2 | 2 |
| 2 | 3 | 2 | 3 |
Bu bağlantı, herhangi bir birleştirme komutunun burada gerekli olan şey olamayacağı sonucuna yol açtı ... Ancak unıon yalnızca satır ekler... bu yüzden benim için istenen sonucun nasıl elde edilebileceği kesinlikle belli değil.
Herhangi bir yardım çok takdir edilmektedir. Şimdiden teşekkürler!