2015-05-12 2 views
-1

Как создать несколько INNER JOIN в одной строке для удобства чтения? Мой ОТРЕДАКТИРОВАНО код прямо сейчас выглядит следующим образом:MYSQL Несколько INNER JOIN на одной строке

SELECT 
    FOO 
FROM 
    RAD_REL_USER_GROUP 
INNER JOIN 
    RAD_USER 
INNER JOIN 
    RAD_GROUP_INFO 
INNER JOIN 
    RAD_CHECK 
INNER JOIN 
    COM_CLIENT_PLAN 
INNER JOIN 
    COM_CLIENTS 
ON 
    FOO.COL = BAR.COL 

Есть ли способ, чтобы включить все внутренние соединения в одной строке, так что легче читать?

+0

Почему бы вам просто не удалить все '\ n'? Думаю, ваш код будет легче читать, чем положить все в одну строку. –

+1

Имея все 'INNER JOIN' на одной строке, код будет намного больше * трудным * для чтения; это заставит читателя работать более тяжело *, чтобы расшифровать утверждение. (Удаление ненужного ключевого слова «INNER» также упростило бы чтение, а не беспорядок.) Без каких-либо предикатов соединения мы могли бы склоняться к включению ключевого слова 'CROSS' перед' JOIN', а не потому, что оно имеет какое-либо влияние, но как документацию для помощи читателю. Кроме того, квалификационные ссылки столбцов (например, 'foo') с именем таблицы или псевдонимом таблицы также позволят читателю легко выяснить, из какой таблицы это происходит. – spencer7593

+0

Вы правы. С точки зрения удобочитаемости он выглядит хорошо, как есть. – mormaii2

ответ

1

Пока есть какие-то пробелы, где это необходимо, MySQL не волнует; но, как говорили другие, в комментариях, сделав его одной строкой, он не станет более читаемым. Для меня это более читаемо

SELECT FOO 
FROM RAD_REL_USER_GROUP 
    INNER JOIN RAD_USER 
     /* ON really, you're joining everything to everything 
     AND this results in a "cross product" 
     */ 
    INNER JOIN RAD_GROUP_INFO 
    INNER JOIN RAD_CHECK 
    INNER JOIN COM_CLIENT_PLAN 
    INNER JOIN COM_CLIENTS ON FOO.COL = BAR.COL 
+0

Вы правы. Это выглядит лучше. – mormaii2