2014-01-28 2 views
0

Я это SQL инструкции (дается от кого-то другого)SQL: Как я могу это прочитать?

FROM P INNER JOIN 
C ON P.p1 = C.p1 INNER JOIN 
G INNER JOIN 
U ON G.u1 = U.u1 ON 
C.c1 = G.c1 INNER JOIN 
R ON P.r1 = R.r1 INNER JOIN 
F ON U.f1 = F.f1 RIGHT OUTER JOIN 
UN ON U.u1 = UN.u1 

Как все это читать? Как работают 2, 3, 4 и 5 строки?

+3

Прочтите это визуальное объяснение: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html. Однако это особенно уродливый набор объединений, и очень непонятно, каково их намерение. –

+0

Вы спрашиваете, как работают SQL-соединения? –

+0

Спрашивается, как работает это конкретное упражнение ... но, как кто-то сказал в ответах, один из ON находится не в том месте. – ntrx

ответ

3

С некоторым форматированием, я думаю, что это становится проще:

FROM P INNER JOIN C 
    ON P.p1 = C.p1 
INNER JOIN G 
INNER JOIN U 
    ON G.u1 = U.u1 
    ON C.c1 = G.c1 
INNER JOIN R 
    ON P.r1 = R.r1 
INNER JOIN F 
    ON U.f1 = F.f1 
RIGHT OUTER JOIN UN 
    ON U.u1 = UN.u1 

И тогда он выглядит как один из ваших ON находится в неправильном месте:

FROM P INNER JOIN C 
    ON P.p1 = C.p1 
INNER JOIN G 
    **ON C.c1 = G.c1**  
INNER JOIN U   
    ON G.u1 = U.u1 
INNER JOIN R 
    ON P.r1 = R.r1 
INNER JOIN F 
    ON U.f1 = F.f1 
RIGHT OUTER JOIN UN 
    ON U.u1 = UN.u1 

Форматирование действительно помогает такого рода вещи ...

+0

Я думаю, что вы правы ... но результаты в обоих случаях одинаковы. Благодарю. – ntrx

+0

Вы спрашиваете нас, как заданный вами запрос работает без схемы таблиц или какой-либо бизнес-логики. Чтение статьи @RB дает вам лучший выбор. – TTeeple

Смежные вопросы