#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 Nun habe ich eine weitere Tabelle mit dem Namen "ActiveMonitorType" in dieser sieht es wie folgt aus 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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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) + Multi-Zitat Zitieren
#4 30. Januar 2014 AW: [SQL] Update Spalte mit "select from" Keiner eine Idee ? + Multi-Zitat Zitieren