Формат соединения SQL - вложенные внутренние соединения

У меня есть следующий оператор SQL в устаревшей системе, которую я реорганизую. Это сокращенное представление для целей этого вопроса, просто пока возвращает count (*).

SELECT COUNT(*)
FROM Table1 
    INNER JOIN Table2 
        INNER JOIN Table3 ON Table2.Key = Table3.Key AND Table2.Key2 = Table3.Key2 
    ON Table1.DifferentKey = Table3.DifferentKey

Он генерирует очень большое количество записей и убивает систему, но не мог бы кто-нибудь объяснить синтаксис? И можно ли это выразить как-то иначе?

  • Таблица1 содержит 419 строк
  • Таблица2 содержит 3374 строки
  • Таблица3 содержит 28182 строки

РЕДАКТИРОВАТЬ:

Предлагаемое переформатирование

SELECT COUNT(*)
FROM Table1 
    INNER JOIN Table3
          ON Table1.DifferentKey = Table3.DifferentKey
    INNER JOIN Table2 
          ON Table2.Key = Table3.Key AND Table2.Key2 = Table3.Key2
22
задан Tim Peel 24 February 2011 в 01:54
поделиться