SQL Server Management Studio - добавьте столбцы, содержащие имя и версию программного обеспечения, к SQL Запрос для систем с указанным c программным обеспечением - PullRequest
0 голосов
/ 20 марта 2020

Я использую Microsoft SQL Server Management Studio для запроса компьютеров с указанным c программным обеспечением в SQL Базе данных сервера. К сожалению, я совершенно новичок в SQL, поэтому я пытаюсь учиться на лету. Я смог создать базовый запрос c благодаря помощи на сайте Прайвала .

Однако я хотел бы немного его уточнить. Я хочу иметь два дополнительных столбца, которые отображают имя программного обеспечения и версию программного обеспечения.

Для начала вот мой код:

SELECT DISTINCT
    sys.Netbios_Name0 AS [Computer Name],
    sys.User_Name0 AS [User Name]
FROM
    v_R_System sys
JOIN 
    v_Add_Remove_Programs arp ON sys.ResourceID = arp.ResourceID
WHERE
    sys.ResourceID IN (SELECT sys.ResourceID
                       FROM v_R_System sys
                       JOIN v_Add_Remove_Programs arp ON sys.ResourceID = arp.ResourceID
                       WHERE DisplayName0 LIKE '%Adobe Reader%')

Это возвращает следующий вывод:

Computer Name | User Name
--------------+-----------
COMPUTER001   | Jane Doe  
COMPUTER002   | John Doe

Однако я хотел бы вывод, как в приведенном ниже примере, с именем программного обеспечения из оператора where и его версией:

Computer Name | User Name | Software     | Version
--------------+-----------+--------------+---------
COMPUTER001   | Jane Doe  | Adobe Reader |  v.XXX
COMPUTER002   | John Doe  | Adobe Reader |  v.XXX

Я попытался добавить в свой оператор Select следующие свойства:

SELECT DISTINCT
    sys.Netbios_Name0 AS [Computer Name],
    sys.User_Name0 AS [User Name],
    arp.DisplayName0 AS [Software],
    arp.Version0 AS [Version]

Но это возвращает КАЖДОМУ программное обеспечение к компьютеру имеет, например, так:

Computer Name | User Name | Software     | Version
--------------+-----------+--------------+--------
COMPUTER001   | Jane Doe  | Adobe Reader |  v.XXX
COMPUTER001   | Jane Doe  | Firefox      |  v.XXX
COMPUTER001   | Jane Doe  | Chrome       |  v.XXX

Мне нужно просто дать конкретное c программное обеспечение, которое я запрашиваю. Я искал по inte rnet, чтобы узнать, смогу ли я найти что-нибудь, чтобы помочь мне, и начал изучать некоторые основы SQL, но пока мне не повезло. Я собираюсь продолжить исследовать и работать над этим, но если кто-нибудь может дать мне какие-либо советы или рекомендации, я был бы очень признателен!

Кстати, мне удалось успешно создать запрос в SCCM, но Я не очень уверен, как перевести WQL в SQL, и работа хочет, чтобы я сделал запрос в SSMS.

1 Ответ

1 голос
/ 21 марта 2020

Если я правильно понимаю, вам на самом деле не нужен внутренний запрос (что является BTW плохой практикой, и его следует избегать любой ценой, поскольку этот запрос выполняется в каждой строке). Ваш запрос может быть упрощен до кода ниже, чтобы достичь того, что вам нужно.

SELECT DISTINCT
    sys.Netbios_Name0 AS [Computer Name],
    sys.User_Name0 AS [User Name],
    arp.DisplayName0 AS [Software],
    arp.Version0 AS [Version]
FROM v_R_System sys
JOIN v_Add_Remove_Programs arp ON sys.ResourceID = arp.ResourceID
WHERE arp.DisplayName0 LIKE '%Adobe Reader%'
...