Подсчет значений в двух таблицах при объединении четырех

Терминология

Из официального глоссария Sun:

deprecation: указывает на класс, интерфейс, конструктор, метод или поле, которое больше не рекомендуется, и может прекратиться существовать в будущей версии.

blockquote>

Из руководства how-and-when to deprecate:

Возможно, вы слышали термин «самоуничижительный юмор» или юмор, который сводит к минимуму важность докладчика. Устаревший класс или метод подобны этому. Это уже не важно. На самом деле так важно, что вы больше не должны его использовать, поскольку он был заменен и может перестать существовать в будущем.

blockquote>

Аннотации @Deprecated пошли дальше и предупреждать об опасности:

Программный элемент, аннотированный @Deprecated, является тем, что программистам не рекомендуется использовать, как правило, потому что это опасно или потому, что существует лучшая альтернатива .

blockquote>

Ссылки


Правильно или неправильно?

Вопрос о том, правильно или неправильно использовать устаревшие методы, должен быть рассмотрен на индивидуальной основе. Вот ВСЕ кавычки, в которых слово «устарело» появляется в Эффективное Java 2nd Edition :

Пункт 7: Избегайте финализаторов: только методы, которые утверждают, что гарантируют завершение, - System.runFinalizersOnExit и его злой близнец Runtime.runFinalizersOnExit.

Пункт 66: Синхронизация доступа к общим изменяемым данным: библиотеки предоставляют метод Thread.stop, но этот метод давно устарел, поскольку он по своей сути небезопасен - его использование может привести к повреждению данных.

Пункт 70: Безопасность потока документа: метод System.runFinalizersOnExit является нить-враждебным и устарел.

Пункт 73: Избегайте групп потоков: они позволяют применять некоторые примитивы Thread к кучке потоков одновременно. Некоторые из этих примитивов устарели, а остальные редко используются. [...] группы потоков устарели.

blockquote>

Итак, по крайней мере, со всеми вышеперечисленными методами, очевидно, неправильно использовать их, по крайней мере, согласно Джошу Блоху.

С помощью других методов вам нужно будет рассматривать проблемы индивидуально и понимать, ПОЧЕМУ они были устаревшими, но, вообще говоря, когда решение об осуждении оправдано, оно будет склоняться к неправильному праву, чтобы продолжать использовать их.

Связанные вопросы

1
задан Suraj Kumar 1 March 2019 в 08:44
поделиться

2 ответа

Вы можете попробовать это

SUM(CASE WHEN CHARINDEX(AREAS.RA_NAME, AD_Results.[Parent Container]) > 0 THEN 1 ELSE 0 END) AS  RA_AD_Objects
0
ответ дан Mahesh 1 March 2019 в 08:44
поделиться

После уик-энда анализа я получил ответ:

SELECT
        AREAS.RA_NAME
    ,   AREAS.RA_DESC
    ,   COUNT( DISTINCT AD_Results.Name) AS RA_AD_Objects
    ,   COUNT( DISTINCT tblAssets.AssetID) AS RA_LS_Objects
FROM AREAS
JOIN AD_Results ON CHARINDEX(AREAS.RA_NAME, AD_Results.[Parent Container]) > 0
LEFT JOIN tblADComputers ON CHARINDEX(AREAS.RA_NAME, tblADComputers.OU) > 0
LEFT JOIN tblAssets ON tblAssets.AssetID = tblADComputers.AssetID
GROUP BY AREAS.RA_NAME, AREAS.RA_DESC
ORDER BY AREAS.RA_NAME
GO

Весь СЧЕТ (СЛУЧАЙ ... перепутал его, и он не был действительно необходим.

0
ответ дан Luksch 1 March 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: