Leave a Comment
SQL coding style
Цель — стараться сделать код как можно более вертикально компактным, но читаемым.
Правила:
- названия таблиц, полей, алиасов всегда только в нижнем регистре с подчёркиванием
- все зарезервированные слова и системные вызовы всегда только в верхнем регистре
- названия всех таблиц должны иметь алиасы
- всем полям желательно иметь алиасы
- ANSI join-style («explicit join notation»)
- названия всех выбираемых полей на новой строке с одним отступом от «SELECT»
- «CASE» разносится на несколько строк с внутренним отступом(см. пример)
- название таблицы пишется на одной строе с «FROM», «JOIN» и т.п.
- условия для «JOIN» пишутся вместе с «ON» и «AND», при этом строка сдвигается на один отступ влево
- «WHERE» пишется без отступа, на этой же строке первое условие для «WHERE»
- остальные условия для WHERE пишутся на новой строке с одним отступом
- для вложенных запросов открывающая скобка ставится на новой строке без отступа, весь вложенный запрос пишется с одним отступом, закрывающая скобка — на новой строке без отступа, вместе с «AS»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
SELECT DISTINCT person.a AS person_main_field, name, pp.id, number, CASE WHEN photo_group.photo IS NOT NULL THEN photo_group.photo ELSE photo_person.photo END AS photo, CASE WHEN photo_group.photo IS NOT NULL THEN 'arts' ELSE 'persons' END AS photo_folder FROM pp AS pp WITH(nolock) INNER JOIN p AS person WITH(nolock) ON person.personId = pp.personId LEFT JOIN photos AS photo_person WITH(nolock) ON person.groupId = -1 AND photo_person.refer_type = 2 AND photo_person.refer_id = person.person_id AND photo_person.is_last = 1 LEFT JOIN photos photo_group WITH(nolock) ON person.groupId <> -1 AND photo_group.refer_type = 3 AND photo_group.refer_id = person.group_id AND photo_group.is_last = 1 WHERE pp.programId IN ( 1, 2, 3 ) AND GETDATE() BETWEEN pp.startAt AND pp.endAt |
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.