2016-04-12 17 views
1

yılında Değil Var kullanmak nasıl Netezza'nın 3 tablolar var.Netezza'nın

Tablo 1: MAĞAZALAR

CREATE TABLE STORES 
(
    STORE_NAME CHARACTER VARYING(10), 
    STORE_TYPE CHARACTER VARYING(10) 
); 

Tablo 2: ŞEHİR

CREATE TABLE CITIES 
(
    CITY CHARACTER VARYING(10) 
); 

Tablo 3: şehir içinde mevcut olan store_type bulmalıyız

CREATE TABLE CITIES_STORES 
(
    STORE_TYPE CHARACTER VARYING(10), 
    CITY CHARACTER VARYING(10) 
); 

CITIES_STORES . Ben de bunu şu şekilde yapmaya çalışıyordum. Eğer belirli bir için, (Stores tabloda mevcut) store_type, ben store_typestore_type cevabım olduğunu o zaman mevcut olmadığı herhangi bir devlet bulamıyor.

select distinct store_type from stores 
where not exists 
(select * from cities 
where not exists 
(select * from cities_stores 
where cities_stores.city=cities.city 
and cities_stores.store_type=stores.store_type)); 

ama nerede yanlış söyle

ERROR: (2) This form of correlated query is not supported - consider rewriting

gibi bir hata veriyor:

Ben Netezza'nın aşağıdaki sorguyu ve koşmak yazdı. Netezza veritabanında bu bir sorun mu var? Genelde

cevap

0

, Netezza'nın korelasyon alt sorgular kötü bir fikir. Bunu gösteren çok iyi kaynaklar var. Aslında, Netezza'nın yazılı olarak açıklama yapmak yerine equivalent join syntax for you belirlemeye çalışır. Yapamadığında, bu hatayı alırsın.

, etrafında almak sadece eşdeğer ilk kez katılmak yazmak için.

select distinct 
    store_type 
from 
    stores str 
    left outer join cities_stores cts using (store_type) 
    left outer join cities cit using (city) 
where 
    city is null 

Not: Eğer bütün şehirlerde mevcuttur store_type bulmak istedi ancak beyanı şehirlerin hiçbirinde değil mevcut store_type s döndüren söyledi. SQL'inizi yeniden yazdım, soruda belirttiğiniz gibi değil.