Найти использование слова 'Ктулху' в теги на переполнение стека


Я написал следующий код SQL, чтобы сосчитать, сколько раз имя 'Ктулху' превращается для каждого тега на переполнение стека (Оригинал здесь):

select t.TagName, count (*) 'Tainted'
from Posts p, Tags t, PostTags pt
where p.Body like '%cthulhu%'
and (pt.PostId = p.Id and t.Id = pt.TagId)
group by t.TagName
order by Tainted DESC, t.TagName ASC

Это работает, но я не привык резать в SQL вручную; я больше привык использовать платформы. Я попытался с помощью содержит вместо Как, но, видимо, организм не настроен для полнотекстового поиска.

Не могли бы вы предоставить мне некоторую обратную связь - в частности, есть ли лучшие практики мне не хватает, и существуют ли стандартные правила форматирования SQL, которые могут сделать его немного легче на глаз?



279
5
задан 28 июня 2011 в 06:06 Источник Поделиться
Комментарии
1 ответ

select t.TagName, count (*) 'Tainted'
from Posts p
inner join PostTags pt on (pt.PostId == p.Id)
inner join Tags t on (t.Id == pt.TagId)
where lower(p.Body) like '%cthulhu%'
group by t.TagName
order by Tainted desc, t.TagName asc


  • Обратите внимание на нижнюю на теле, так как это (должно?) быть чувствительны к регистру.

  • Соединения также легче читать, ИМХО, чем условия в предложении where.

  • Форматирование на основе право-выравнивая запросам и слева-выравнивая положения.

2
ответ дан 28 июня 2011 в 10:06 Источник Поделиться