2016-04-09 8 views
0

Ich weiß über innere Verbindung, linke Verbindung, rechte Verbindung, äußere Verbindung. Was ist Self-Join? Irgendjemand erklärt mir, was ist Self Join und es verwendet und auch wo zu verwenden.Was ist Self Join und wie schreibe ich Self Join für mehr als 3 Tabellen?

Dann möchte ich auch wissen, wie man mehr als drei Tabellen mit Self-Join verbinden.

Eg Kunden Tabelle

1) CustomerID UNIQUEPrimärSchlüssel nicht null, 2) Kundenname Varchar (100), 3) CustomerTypeID UNIQUE null,

Customer

1) CustomerTypeID uniqueidentifier Primärschlüssel nicht null 2) CustomerType varchar null

Customer Tabelle

1) UNIQUEPrimärSchlüssel nicht null 2) CustomerID UNIQUE null CustomerAddressID, 3) AddressID UNIQUE null,

Adresse

1) AddressID UNIQUEPrimärSchlüssel not null, 2) Straße varchar (100) null, 3) Ort varchar (100) null, 4) Platziere varchar (100), nul l, 5) AreaID UNIQUE null, 6) PinCode Varchar (100)

Gebiet

1) AreaID UNIQUEPrimärSchlüssel nicht null, 2) Fläche Varchar (100)

Hier Ich erwähne einige Tabellen. Jetzt möchte ich Kundenname, Kundentyp, Straße, Ort, Ort, Bereich, PinCode anzeigen. Nun, wie ich selbst beitreten für diese Tabellen. bitte jemand erklären dieses Konzept.

Antwort

0

Self-Join verbindet einen Tisch mit sich selbst.Dies wird in einem Szenario getan wie unten-

TableProductCategory


ID  CategoryName ParentCategoryID 

1  Clothes  NULL 
2  Jeans   1 
3  Shorts  1 

So in einem solchen Szenario, wenn Sie mit ihren übergeordneten Kategorie Name Name der Kategorien zur Liste Sie verwenden würde, selbst verbinden wie unter

Select A.CategoryName, B.CategoryName as ParentCategoryName 
from 
TableProductCategory A LEFT JOIN TableProductCategory B 
on A.ParentCategoryID=B.ID 

Für Ihre Anforderung

Kundenname, Customer, Straße, Ort, Gebiet, Fläche, PinCode

müssen Sie einfach LEFT JOIN wie Abfrage unter

Select 
C.CustomerName, 
T.CustomerType, 
A.Street, 
A.Place, 
A.Location, 
AA.Area, 
A.Pincode 
From 
    Customer C 
    LEFT JOIN CustomerType T on C.CustomerTypeID=T.CustomerTypeID 
    LEFT JOIN CustomerAddress CA on C.CustomerID =CA.CustomerID 
    LEFT JOIN Address A on A.AddressID=CA.AddressID 
    LEFT JOIN Area AA on AA.AreaID=A.AreaID 
verwenden