Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SCCM2007 Java查询_Sql_Sccm - Fatal编程技术网

Sql SCCM2007 Java查询

Sql SCCM2007 Java查询,sql,sccm,Sql,Sccm,我想生成一个查询,列出除6以外的所有Java版本的PC。他们查询我创建的显示任何Java版本(包括6)的PC,我只想列出有Java但没有6的PC 这是我得到的 SELECT arp.DisplayName0 AS 'Product', arp.Version0 AS 'Version', sys.Name0 AS 'PC Name' FROM v_Add_Remove_Programs arp INNER JOIN v_R_System sys ON

我想生成一个查询,列出除6以外的所有Java版本的PC。他们查询我创建的显示任何Java版本(包括6)的PC,我只想列出有Java但没有6的PC

这是我得到的

SELECT 
    arp.DisplayName0 AS 'Product',
    arp.Version0 AS 'Version',
    sys.Name0 AS 'PC Name'
FROM
    v_Add_Remove_Programs arp 
    INNER JOIN v_R_System sys ON arp.ResourceID=sys.ResourceID
WHERE
    arp.DisplayName0 LIKE '%Java%' AND
    arp.Publisher0 LIKE '%Oracle%' AND
    arp.Version0 NOT LIKE '%6%'
GROUP BY
    arp.DisplayName0,
    arp.Version0,
    sys.Name0
表结构:

Product     Version                         PC Name 
Java        7 Update 10 7.0.100             PC1 
Java        7 Update 10 7.0.100             PC2 
Java        7 Update 11 7.0.110             PC3 
Java        7 Update 13 7.0.130             PC4 
Java        7 Update 13 7.0.130             PC5 
Java        7 Update 13 (64-bit) 7.0.130    PC6

编辑:在看到有关某些电脑安装了多个版本的评论后,您需要使用NOT EXISTS查询筛选出任何安装了版本6的电脑

SELECT      DISTINCT 
            arp.DisplayName0        AS 'Product',
            arp.Version0            AS 'Version',
            sys.Name0               AS 'PC Name'
FROM        v_Add_Remove_Programs   arp 
INNER JOIN  v_R_System              sys ON  arp.ResourceID = sys.ResourceID
WHERE       arp.DisplayName0 = 'Java' 
AND NOT EXISTS
(
    SELECT      *
    FROM        v_Add_Remove_Programs   arp1
    INNER JOIN  v_R_System              sys1    ON  arp1.ResourceID = sys1.ResourceID
    WHERE       sys1.Name0 = sys.Name0
    AND         arp1.DisplayName0 = 'Java'
    AND         arp1.Version0 LIKE '6%'
)

另一个解决方案是只排除版本为6:SELECT的ResourceID arp.DisplayName0作为“产品”, arp.Version0作为“版本”, sys.Name0为“PC名称” 从…起 v_添加_删除_程序arp arp上的内部连接v_R_系统sys.ResourceID=sys.ResourceID 哪里 arp.DisplayName0类似于“%Java%”和 arp.Publisher0,如“%Oracle%”和 arp.ResourceID不在 选择资源ID 从v_添加_删除_程序 哪里 arp.DisplayName0类似于“%Java%”和 arp.Publisher0,如“%Oracle%”和 arp.Version0类似于“%6%” 分组 arp.DisplayName0, arp.Version0,
sys.Name0

您的数据是什么样子的?将LIKE与前导通配符和尾随通配符一起使用似乎令人担忧。数据显示,除了6之外,所有版本的Java都安装在PC上,但问题是,其中一些PC还安装了6以及7或8。我只想要安装了7台或8台的电脑,但不要同时安装6台。我的意思是,数据在物理上是什么样子的。您可以包含表格中的示例数据吗?产品版本PC名称Java 7 Update 10 7.0.100 PC1 Java 7 Update 10 7.0.100 PC2 Java 7 Update 11 7.0.110 PC3 Java 7 Update 13 7.0.130 PC4 Java 7 Update 13 7.0.130 PC5 Java 7 Update 13 64位7.0.130 PC6例如,PC4安装了Java 7,但也安装了Java 6。如果还安装了Java 6,我不想在列表中显示PC4。Matt,我刚试过你的,但仍然有在同一台电脑上安装了6和7的电脑。Siyual,我没有从你那里得到任何记录,我知道有些电脑安装了7,而不是6。我想Siyual现在可以工作了,我将显示名称更改为LIKE%,现在点击率很高,谢谢你,你太棒了!