2016-04-01 24 views
0

Aşağıdaki sorun var.Oracle'da iki tablo için diğer adlarla birleştirme nasıl yapılır?

SELECT A.ID, A.NAME, A.STORE, A.AGE, B.STOREADDRESS 
FROM TableALong as A, TableBLong as B 
ON A.NAME = B.NAME and A.STORE = B.STORE 

Bu geçersiz: Ben

Ben böyle bir şey var burada katılmadan önce bir ALIAS gibi bir şey yapmak istiyorum
TableALong 

ID, Name, Store,Age 
1, John, Walmart, 5 
2, Johnny, Walmart, 8 
3, Johnny, Target , 10 
4, Bill, Shoppers, 2 
5, Joe, Target, 3 

TableBLong 
ID, Name, Store, StoreAddress 
1, John, Walmart, 35353 Address 
1, John, Walmart, 53544 Address 
2, Johnny, Walmart, 35353 Address 

ben "TableALong" ve "TableBLong" Katılım istiyorum 2 tablolar kahin. Bunu kehanette çalışması için doğru sorgu nedir? İstediğim bir sol birleşim olduğunu mu sanıyorum? (Katıldıktan sonra, TableALong her bir öğe için birden satırlar olacaktır.)

+0

Bu, tüm SQL motorlarında geçersiz olduğunu düşünüyorum. Oracle'da eski örtülü birleşimleri ('FROM A, B') veya modern açık birleşimleri (' JOOM B ON ... ') kullanabilirsiniz, ancak "ON" deyiminin tek başına bir anlamı yoktur. –

+0

@Rolando Sorgunuzu düzeltmek için sorgunuzdan "as" anahtar kelimesini silerek deneyebilirsiniz. "Tableal L, TableBLong B'den" şimdi her şey çalışmalı ... Eğer çalışıyorsa o zaman bana haber ver ... – Shiv

cevap

2

sabit sorgusu: Yerine LEFT OUTER ait

SELECT A.ID, 
     A.NAME, 
     A.STORE, 
     B.STOREADDRESS as yourAlias /* AS is ok for column aliases ... */ 
FROM TableALong A     /* ... but not for table aliases */ 
    LEFT OUTER JOIN TableBLong B /* JOIN syntax */ 
     ON (A.NAME = B.NAME and A.STORE = B.STORE) 
WHERE ... 

Eğer, INNERFULL OUTER olabilir ...; daha fazla bilgi için here'a bakın.

+2

Sorunun "FROM" maddesinde olduğu gibi olduğunu da belirtmek gerekir. Oracle bunu desteklemiyor. Ve, 'NATURAL JOIN', olmasını bekleyen bir hatadır, bu yüzden kullanmayın. –

+0

Eğer A.NAME = 'John' mümkün olduğu yerde nerede bir duraklama eklemek istedim? – Rolando

+0

Sorgunun sonunda, tam olarak yazdığınız şekilde ekleyebilirsiniz. – Aleksej