What is a "self join" correct and full definition? As I understand self join is something like `...FROM Role r1 INNER JOIN Role r2 ON r1.ID = r2.ParenteRoleId`

But where the "self join" is in this code: 
<http://sqlfiddle.com/#!6/e7d058/1>

```
CREATE TABLE dbo.Classifier
(
    ID int IDENTITY(1,1) NOT NULL,
    Name nvarchar(128) NOT NULL
)
GO
CREATE TABLE dbo.Data
(
    ID int IDENTITY(1,1) NOT NULL,
    ClassifierID1 int  NOT NULL,
    ClassifierID2 int  NOT NULL
)

GO
CREATE VIEW dbo.DataEx WITH SCHEMABINDING AS 
SELECT d.ID, c1.Name as ClassifierName1, c2.Name as ClassifierName2
FROM dbo.Data d
    INNER JOIN dbo.Classifier c1 ON d.ClassifierID1=c1.ID
    INNER JOIN dbo.Classifier c2 ON d.ClassifierID2=c2.ID

GO 

SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

CREATE UNIQUE CLUSTERED INDEX [dbo$DataEx$PK] ON dbo.DataEx 
(
    [ID]
)

GO

```

This code throws an error: 

```
Cannot create index on view "testdb.dbo.DataEx". The view contains a self join on "testdb.dbo.Classifier".

```

I also have tried to avoid this error using `FROM dbo.Data d, dbo.Classifier c1, dbo.Classifier c2 WHERE d.ClassifierID1=c1.ID AND d.ClassifierID2=c2.ID` but this doesn't help. 

As I understand I can't use the same table twice in Indexed Views and I can't do anything with that, but at least I could learn some terminology ..