1

我需要一些帮助来编写一个 SQL 查询,但无论如何我都不精通这个。我试图在安装了显示名称为“TestMe”的软件的系统上查找计算机硬件。这是SQL代码:

SELECT dbo.v_GS_ADD_REMOVE_PROGRAMS_DispalyName0, SYS.Netbios_Name0, Processor.Name0, Processor.MaxClockSpeed0, Processor.DeviceID0
FROM v_R_System SYS
JOIN v_GS_PROCESSOR Processor on SYS.ResourceID=Processor.ResourceID
JOIN dbo.v_GS_ADD_REMOVE_PROGRAMS
WHERE v_GS_ADD_REMOVE_PROGRAMS_DisplayName0 LIKE %TestMe%
ORDER BY SYS.Netbios_Name0

当我执行此操作时,我不断收到以下错误:

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'WHERE'.

我非常感谢您的帮助。谢谢大家。

4

3 回答 3

3

您需要在 WHERE 之前打开条件,并且还需要像这样放置“%TestMe%”:

SELECT dbo.v_GS_ADD_REMOVE_PROGRAMS_DispalyName0, SYS.Netbios_Name0, Processor.Name0, Processor.MaxClockSpeed0, Processor.DeviceID0
FROM v_R_System SYS JOIN v_GS_PROCESSOR Processor on SYS.ResourceID=Processor.ResourceID JOIN dbo.v_GS_ADD_REMOVE_PROGRAMS as t on t.Id = SYS.ResourceID
WHERE v_GS_ADD_REMOVE_PROGRAMS_DisplayName0 LIKE '%TestMe%' ORDER BY SYS.Netbios_Name0

请注意,我不知道您的表之间的关系,因此 t.Id = SYS.ResourceID 需要更改为正确的逻辑表达式。

于 2012-10-23T21:01:09.650 回答
0

您需要在 %TestMe% 周围加上单引号,因为您使用的是 like运算符。

于 2012-10-23T21:20:25.217 回答
0

对不起,我没有早点回复,我一直很忙于家庭事务。无论如何,我决定不使用 SQL 报告,而是使用 WMI 查询,而不是似乎提供了我正在寻找的结果,因为 SQL 报告仅针对安装了特定软件且我不想使用的系统我的 SQL 报告,因为它只是临时使用。这就是我使用 WMI 查询的原因。这是我使用的 WMI 查询代码:

select distinct SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version, SMS_G_System_X86_PC_MEMORY.TotalPhysicalMemory, SMS_G_System_LOGICAL_DISK.Size, SMS_G_System_IDE_CONTROLLER.Description, SMS_G_System_PROCESSOR.Name, SMS_G_System_PROCESSOR.MaxClockSpeed, SMS_G_System_PROCESSOR.AddressWidth, SMS_G_System_MOTHERBOARD_DEVICE.PrimaryBusType, SMS_G_System_VIDEO_CONTROLLER.VideoProcessor, SMS_G_System_VIDEO_CONTROLLER.AdapterRAM, SMS_G_System_OPERATING_SYSTEM.Caption, SMS_G_System_OPERATING_SYSTEM.CSDVersion from  SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_X86_PC_MEMORY on SMS_G_System_X86_PC_MEMORY.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_PROCESSOR on SMS_G_System_PROCESSOR.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_VIDEO_CONTROLLER on SMS_G_System_VIDEO_CONTROLLER.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_MOTHERBOARD_DEVICE on SMS_G_System_MOTHERBOARD_DEVICE.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_IDE_CONTROLLER on SMS_G_System_IDE_CONTROLLER.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_LOGICAL_DISK on SMS_G_System_LOGICAL_DISK.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName = "Varian Aria Radiation Oncology Client" order by SMS_R_System.Name
于 2012-10-28T23:25:55.940 回答