Üç farklı dosya türü içerebilen bir tablom var. A tipi dosya varsa, A'yı seçin, B tipi B varsa ve aynı client_id ile C tipi yok, B'yi seçin, C tipi seçin.
Seçili dosyayı kaldıran başka bir sihir daha sonra gerçekleşir masadan. Koşullu seçim sütun değerine bağlı olarak
ID | TYPE | CLIENT_ID
########################
file1 | A | 1
file2 | B | 1
file3 | C | 1
file4 | B | 2
ve evde, sqlfidde veya sql de birlikte takip etmek isteyenler için: Ben oluşturmak umuyorum
create table files (
id varchar(8) primary key,
type varchar(4),
client_id number
);
insert into files values ('file1', 'A', 1);
insert into files values ('file2', 'B', 1);
insert into files values ('file3', 'C', 1);
insert into files values ('file4', 'B', 2);
Sorgu dört kez çalıştırıldığında aşağıdaki sırayla sonuçlanması gereken yukarıdaki ölçütleri temel alan bir sonraki dosyayı almak için büyük bir kötü sorgu:
#1: file1, A, 1 (grab any As first)
#2: file4, B, 2 (grab any Bs who don't have any Cs with the same client_id)
#3: file3, C, 1 (grab any Cs)
#4: file2, B, 1 (same as run #2)
Bana en uzak var
girişimi her tip için üç ayrı sorguları yazmak için oldu:
--file type 'A' selector
select * from files where type = 'A'
--file type 'B' selector
select * from files where type = 'B' and client_id = (
select client_id from files group by client_id having count(*) = 1
);
--file type 'C' selector
select * from files where type = 'C'
Ben satır sayısı her sonra geri kontrol etmek istiyorum ve onu 0 kullanımının önümüzdeki seçme, ama hepsi ise bir SQL deyiminde.
Teşekkür ... olmayabilir, amaç sadece bir satır döndürmektir şeyi taramak zorunda olabilir bu sadece bir defa masaya değdiği
iki şekilde de,. Tablo küçük kalacaktır, böylece tüm şeyi taramak bir sorun değildir. – cazzer
Gelecekte bu başkalarına yardımcı olur - Oracle, tüm ustalıklarıyla normlara aykırı davranmaya ve 'aksi' yerine 'başka' yerine varsayılan kepçeye sahip olmaya karar verdi. – killjoy