簡體   English   中英

多個表的SCCM SQL查詢聯接

[英]SCCM SQL Query Join of Multiple tables

這是一個針對所有您的SQL頭腦的問題。 我正在從SCCM數據庫中加入幾個表。 我正在嘗試加入多個表。 這是我的查詢:

SELECT v_R_System.Name0,
  v_GS_SYSTEM_ENCLOSURE.ChassisTypes0,
  v_GS_SYSTEM_ENCLOSURE.Manufacturer0,
  v_GS_SYSTEM_ENCLOSURE.Model0,
  v_R_System.Operating_System_Name_and0,
  v_R_User.User_Name0,
  v_UsersPrimaryMachines.UserResourceID ,
  v_R_User.Full_User_Name0,
  v_R_System.Is_Virtual_Machine0,
  v_GS_X86_PC_MEMORY.TotalPhysicalMemory0,
  v_RA_System_IPAddresses.IP_Addresses0
FROM v_R_System
LEFT JOIN v_GS_SYSTEM_ENCLOSURE
ON v_R_System.ResourceID = v_GS_SYSTEM_ENCLOSURE.ResourceID
LEFT JOIN v_RA_System_IPAddresses
ON v_R_System.ResourceID = v_RA_System_IPAddresses.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY
ON v_R_System.ResourceID = v_GS_X86_PC_MEMORY.ResourceID
LEFT JOIN v_UsersPrimaryMachines
ON v_R_System.ResourceID = v_UsersPrimaryMachines.MachineID
LEFT JOIN v_R_User
ON v_UsersPrimaryMachines.UserResourceID = v_R_User.ResourceID
WHERE (v_RA_System_IPAddresses.IP_Addresses0 NOT LIKE '%:%')

在我的結果中,同一台計算機多次列出同一台計算機。 我希望為計算機列出的每個用戶都能看到此信息。 所以,我的問題是我希望所有計算機至少列出一次。 與Users_PrimaryMachine表中的RecsourceID匹配的計算機應顯示列出的v_R_User表中具有匹配的UserResourceID的主用戶數量。 我猜我需要將JOIN更改為INNER JOIN。 但是,一旦我這樣做,我只會列出2台CLIENT機器,每台2次。

Name0   ChassisTypes0   Manufacturer0   Model0  Operating_System_Name_and0  User_Name0  UserResourceID  Full_User_Name0 Is_Virtual_Machine0 TotalPhysicalMemory0    IP_Addresses0
SCCM-2K12       1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   4193780 192.168.91.15
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   puser   2063597571  Paul User   1   1048052 192.168.91.103
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   juser   2063597572  John User   1   1048052 192.168.91.103
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   NULL    2080374786  NULL    1   1048052 192.168.91.103
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   NULL    2080374787  NULL    1   1048052 192.168.91.103
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   NULL    2080374789  NULL    1   1048052 192.168.91.103
WIN8-CLIENT1    1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.2 (Tablet Edition)   NULL    2080374790  NULL    1   1048052 192.168.91.103
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   jdoe    2063597570  Jane Doe    1   2096628 192.168.91.100
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   puser   2063597571  Paul User   1   2096628 192.168.91.100
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   NULL    2080374786  NULL    1   2096628 192.168.91.100
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   NULL    2080374787  NULL    1   2096628 192.168.91.100
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   NULL    2080374789  NULL    1   2096628 192.168.91.100
WIN81-CLIENT2   1   No Enclosure    NULL    Microsoft Windows NT Workstation 6.3 (Tablet Edition)   NULL    2080374790  NULL    1   2096628 192.168.91.100
SCSM-2K12   1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   4193780 192.168.91.12
SCSM-SSP    1   No Enclosure    NULL    Microsoft Windows NT Server 6.1 NULL    NULL    NULL    1   2096632 192.168.91.17
MAIL    1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   6290932 192.168.91.11
SCOM-2K12-DB    1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   4193780 192.168.91.19
SCOM-2K12   1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   2096628 192.168.91.18
SCORCH-2K12 1   No Enclosure    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    1   2096628 192.168.91.21
SCDW-2K12   NULL    NULL    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    NULL    NULL    192.168.91.13
SHARE-2K8   NULL    NULL    NULL    Microsoft Windows NT Server 6.1 NULL    NULL    NULL    NULL    NULL    192.168.91.16
IIS-2K12    NULL    NULL    NULL    Microsoft Windows NT Server 6.2 NULL    NULL    NULL    NULL    NULL    192.168.91.14

誰能弄清楚這一點,將是我的英雄!

嘗試更改左連接之一ON v_R_System.ResourceID = v_UsersPrimaryMachines.MachineID

LEFT JOIN v_GS_SYSTEM_ENCLOSURE
ON v_R_System.ResourceID = v_GS_SYSTEM_ENCLOSURE.ResourceID
LEFT JOIN v_RA_System_IPAddresses
ON v_R_System.ResourceID = v_RA_System_IPAddresses.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY
ON v_R_System.ResourceID = v_GS_X86_PC_MEMORY.ResourceID
LEFT JOIN v_UsersPrimaryMachines
ON v_R_System.ResourceID = v_UsersPrimaryMachines.MachineID
LEFT JOIN v_R_User
ON v_UsersPrimaryMachines.UserResourceID = v_R_User.ResourceID
WHERE (v_RA_System_IPAddresses.IP_Addresses0 NOT LIKE '%:%')

至:

LEFT JOIN v_GS_SYSTEM_ENCLOSURE
ON v_R_System.ResourceID = v_GS_SYSTEM_ENCLOSURE.ResourceID
LEFT JOIN v_RA_System_IPAddresses
ON v_R_System.ResourceID = v_RA_System_IPAddresses.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY
ON v_R_System.ResourceID = v_GS_X86_PC_MEMORY.ResourceID
LEFT JOIN v_UsersPrimaryMachines
ON v_R_System.ResourceID = v_UsersPrimaryMachines.UserResourceID
LEFT JOIN v_R_User
ON v_UsersPrimaryMachines.UserResourceID = v_R_User.ResourceID
WHERE (v_RA_System_IPAddresses.IP_Addresses0 NOT LIKE '%:%')

完整查詢

SELECT v_R_System.Name0,
  v_GS_SYSTEM_ENCLOSURE.ChassisTypes0,
  v_GS_SYSTEM_ENCLOSURE.Manufacturer0,
  v_GS_SYSTEM_ENCLOSURE.Model0,
  v_R_System.Operating_System_Name_and0,
  v_R_User.User_Name0,
  v_UsersPrimaryMachines.UserResourceID ,
  v_R_User.Full_User_Name0,
  v_R_System.Is_Virtual_Machine0,
  v_GS_X86_PC_MEMORY.TotalPhysicalMemory0,
  v_RA_System_IPAddresses.IP_Addresses0
FROM v_R_System
LEFT JOIN v_GS_SYSTEM_ENCLOSURE
ON v_R_System.ResourceID = v_GS_SYSTEM_ENCLOSURE.ResourceID
LEFT JOIN v_RA_System_IPAddresses
ON v_R_System.ResourceID = v_RA_System_IPAddresses.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY
ON v_R_System.ResourceID = v_GS_X86_PC_MEMORY.ResourceID
LEFT JOIN v_UsersPrimaryMachines
ON v_R_System.ResourceID = v_UsersPrimaryMachines.UserResourceID
LEFT JOIN v_R_User
ON v_UsersPrimaryMachines.UserResourceID = v_R_User.ResourceID
WHERE (v_RA_System_IPAddresses.IP_Addresses0 NOT LIKE '%:%')

好。 昨晚我又戳了一些。 我最終得到了一個子選擇,該選擇使我得到了想要的結果。 謝謝您的幫助。 我最終得到的是:

SELECT
  S.Name0,
  S.Operating_System_Name_and0,
  S.Is_Virtual_Machine0,
  US.Full_User_Name0,
  US.User_Name0,
  v_GS_SYSTEM_ENCLOSURE.ChassisTypes0,
  v_GS_SYSTEM_ENCLOSURE.Manufacturer0,
  v_GS_SYSTEM_ENCLOSURE.Model0,
  v_GS_X86_PC_MEMORY.TotalPhysicalMemory0,
  v_RA_System_IPAddresses.IP_Addresses0
FROM v_R_System S
LEFT JOIN v_GS_SYSTEM_ENCLOSURE
ON S.ResourceID = v_GS_SYSTEM_ENCLOSURE.ResourceID
LEFT JOIN v_RA_System_IPAddresses
ON S.ResourceID = v_RA_System_IPAddresses.ResourceID
LEFT JOIN v_GS_X86_PC_MEMORY
ON S.ResourceID = v_GS_X86_PC_MEMORY.ResourceID
LEFT JOIN 
(SELECT
  U.User_Name0,
  UPM.UserResourceID,
  UPM.MachineID,
  U.Full_User_Name0
FROM v_UsersPrimaryMachines UPM
JOIN v_R_User U
ON UPM.UserResourceID = U.ResourceID) US
ON S.ResourceID = US.MachineID
WHERE (v_RA_System_IPAddresses.IP_Addresses0 NOT LIKE '%:%')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM