[SQL] Update Spalte mit "select from"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von romestylez, 28. Januar 2014 .

Schlagworte:
  1. 28. Januar 2014
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Hallo,
    ich habe folgende Abfrage.

    Code:
    SELECT 
    Device.sDisplayName as DisplayName,
    DeviceType.sDisplayName as DeviceTypeName,
    PivotActiveMonitorTypeToDevice.nActiveMonitorTypeID as MonitorID
    FROM (WhatsUp.dbo.Device INNER JOIN WhatsUp.dbo.DeviceType ON Device.nDeviceTypeID = DeviceType.nDeviceTypeID) 
    INNER JOIN WhatsUp.dbo.NetworkInterface ON Device.nDeviceID = NetworkInterface.nDeviceID and Device.nDefaultNetworkInterfaceID = NetworkInterface.nNetworkInterfaceID
    INNER JOIN WhatsUp.dbo.PivotActiveMonitorTypeToDevice ON Device.nDeviceID = PivotActiveMonitorTypeToDevice.nDeviceID
    where Device.bRemoved = '0'
    
    Damit bekomme ich folgende Ausgabe
    asd.jpg

    Nun habe ich eine weitere Tabelle mit dem Namen "ActiveMonitorType" in dieser sieht es wie folgt aus
    asdsaasd.jpg

    Ich würde nun gerne meine Abfrage so erweitern das anstatt nur der "MonitorID" die Spalte "sMonitorTypeName" und "sMonitorTypeDescription" ausgegeben wird. Ich muss also irgendwie die ausgegebene ID in dieser Tabelle suchen/finden und dann mit ausgeben.

    Hat jemand eine Idee bzw. ein Beispiel wie ich das am besten umsetzen kann ?

    //EDIT

    Habe nun folgendes nur das Update funktioniert leider nicht :<

    Code:
    INSERT INTO WugTemp ([DisplayName], [DeviceTypeName], [MonitorID])
    SELECT Device.sDisplayName as DisplayName, DeviceType.sDisplayName as DeviceTypeName, PivotActiveMonitorTypeToDevice.nActiveMonitorTypeID as MonitorID
    
    FROM (WhatsUp.dbo.Device 
    INNER JOIN WhatsUp.dbo.DeviceType ON Device.nDeviceTypeID = DeviceType.nDeviceTypeID) 
    INNER JOIN WhatsUp.dbo.NetworkInterface ON Device.nDeviceID = NetworkInterface.nDeviceID and Device.nDefaultNetworkInterfaceID = NetworkInterface.nNetworkInterfaceID
    INNER JOIN WhatsUp.dbo.PivotActiveMonitorTypeToDevice ON Device.nDeviceID = PivotActiveMonitorTypeToDevice.nDeviceID
    where Device.bRemoved = '0';
    
    UPDATE [WhatsUp].[dbo].[WugTemp] SET MonitorID 
    SELECT ActiveMonitorType.sMonitorTypeName FROM [WhatsUp].[dbo].[ActiveMonitorType], [WhatsUp].[dbo].[WugTemp] where ActiveMonitorType.nActiveMonitorTypeID = WugTemp.MonitorID
     
  2. 28. Januar 2014
    AW: [SQL] Update Spalte mit "select from"

    Hallo!

    Wie waere es damit dein erstes Ergebnis als View zu speichern:
    Code:
    CREATE VIEW DisplayOverview AS SELECT 
    Device.sDisplayName as DisplayName,
    DeviceType.sDisplayName as DeviceTypeName,
    PivotActiveMonitorTypeToDevice.nActiveMonitorTypeID as MonitorID
    FROM (WhatsUp.dbo.Device INNER JOIN WhatsUp.dbo.DeviceType ON Device.nDeviceTypeID = DeviceType.nDeviceTypeID) 
    INNER JOIN WhatsUp.dbo.NetworkInterface ON Device.nDeviceID = NetworkInterface.nDeviceID and Device.nDefaultNetworkInterfaceID = NetworkInterface.nNetworkInterfaceID
    INNER JOIN WhatsUp.dbo.PivotActiveMonitorTypeToDevice ON Device.nDeviceID = PivotActiveMonitorTypeToDevice.nDeviceID
    WHERE Device.bRemoved = '0';
    Und nun die einfache Abfrage:
    Code:
    SELECT DisplayOverview.DisplayName, DisplayOverview.DeviceTypeName, ActiveMonitorType.sMonitorTypeName, ActiveMonitorType.sMonitorTypeDescription
    FROM DisplayOverview, ActiveMonitorType
    WHERE DisplayOverview.MonitorID = ActiveMonitorType.nActiveMonitorTypeID;
    Also die beiden Tabellen zu verbinden und eben die Zeilen, bei denen die MonitorIDs uebereinstimmen, zusammenzufuegen. Die genaue Syntax kann je nach DBMS variieren. Welches benutzt du denn?

    Mfg,

    Kolazomai
     
  3. 28. Januar 2014
    AW: [SQL] Update Spalte mit "select from"

    Wäre auch eine Möglichkeit. Habe mit Views auch nocht nicht so viel gemacht und deswegen den Weg über die Temp-Tabelle genutzt. Wenn ich deine Abfrage richtig verstehe mach die auch nicht das was ich möchte, könnte aber auch mein fail sein.

    Läuft alles auf einem SQL-Server 2008 und eigentlich habe ich das ja auch komplett fertig nur das UPDATE mit dem SELECT funtzt halt leider nicht ^^

    Mein Weg ist also:

    Resultat in eine Temp-Tabelle schreiben.
    Select der ID machen und mit der ID in der Tabelle vergleichen in welcher auch der Name steht.
    Dann das ID-Feld in der Temp-Tabelle mit dem Namen updaten.


    //EDIT:

    Ich glaube ich habe meinen Fehler gerade gefunden. Ich glaube das "=" und die () fehlen nach "SET MonitorID" kann das aber erst morgen testen.

    Falsch
    Code:
    UPDATE [WhatsUp].[dbo].[WugTemp] SET MonitorID 
    SELECT ActiveMonitorType.sMonitorTypeName FROM [WhatsUp].[dbo].[ActiveMonitorType], [WhatsUp].[dbo].[WugTemp] where ActiveMonitorType.nActiveMonitorTypeID = WugTemp.MonitorID
    Richtig
    Code:
    UPDATE [WhatsUp].[dbo].[WugTemp] SET MonitorID =
    (SELECT ActiveMonitorType.sMonitorTypeName FROM [WhatsUp].[dbo].[ActiveMonitorType], [WhatsUp].[dbo].[WugTemp] where ActiveMonitorType.nActiveMonitorTypeID = WugTemp.MonitorID)
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.