Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst MS SQL Datensatz vergleichen

Mitglied: Taucher4000

Taucher4000 (Level 1) - Jetzt verbinden

19.06.2010, aktualisiert 12:54 Uhr, 9991 Aufrufe, 3 Kommentare

Ist es möglich zwei Datensätze in SQL zu vergleichen und nur die unterschiede auszugeben?

Hallo,

ich habe ein MS SQL-Problem von dem ich nicht genau weis, wie ich es lösen kann. Ich habe zwei Tabellen mit identischer Struktur. In den Tabellen sind jeweils Computerkonfigurationen gespeichert. In der ersten Tabelle jeweils die aktuelle und in der zweiten eine Konfiguration von vor ein Paar Tagen.

Tabelle 1

UUID name prozessor speicher ......
123456 pcname-1 Intel Core2Quad 2,4 GHz 2048MB ......


Tabelle 2

UUID name prozessor speicher ......
123456 pcname-2 Intel Core2Duo2,2 GHz 2048MB ......


Nun würde ich die beiden Datensätze in der Tabelle miteinander vergleichen und nur die geänderten Werte angezeigt bekommen. Die Datensätze sind jeweils im Feld UUID identisch und somit identifizierbar. Ist soetwas mit einer oder mehreren SQL-Abfragen möglich? Ald Datenbank verwende ich derteit einen Microsoft SQL 2008 Server Express.

Die Ausgabe könnte dann z.B. wie folgt aussehen:

UUID alter-wert neuer-wert
123456 Intel Core2Duo 2,2 GHz Intel Core2Quad 2,4 GHz
123456 pcname-2 pcname-1

Über eine Lösung wüde ich mich feuen.
Viele Grüße
Taucher4000
Mitglied: Biber
19.06.2010 um 13:33 Uhr
Moin Taucher4000,


mach doch einfach ein UNION ALL über beide Tabellen und ein GROUP BY mit HAVING über alle (relevanten) Felder.

Alle Datensätze, von denen es nicht 2 deckungsgleiche gibt lässt du anzeigen.

Sinngemäß & ungetestet:
01.
 
02.
SELECT Min(quelltab), UUID, 	name , prozessor , speicher, whatelse 
03.
FROM ( 
04.
SELECT "Tabelle1" as QuellTab, UUID, name , prozessor, 	speicher, Feldxy as Whatelse 
05.
     FROM Tabelle1 
06.
UNION ALL 
07.
SELECT "Tabelle2" , UUID, name , prozessor, 	speicher, Feldxy  
08.
     FROM Tabelle2 
09.
) x 
10.
GROUP BY x.UUID, x.name , x.prozessor, 	x.speicher, x.whatelse 
11.
HAVING x.QuellTab < 2
Wenn du allerdings die oben gepostete Darstellung (also mit 1 Zeile pro abweichender Spalte) haben willst,
dann wird es ziemlich aufwändig -> würde ich nur im Notfall weiterdiskutieren.

Grüße
Biber
Bitte warten ..
Mitglied: filippg
19.06.2010 um 15:58 Uhr
Hallo,

ich würde erst selektieren, und dann ein UNION machen:

SELECT tabelle1.uuid, tabelle1.prozessor as alt, tabelle2.prozessor as neu from tabelle1 inner join tabelle2 on tabelle1.uuid = tabelle2.uuid WHERE tabelle1.prozessor <> tabelle2.prozessor
UNION
SELECT tabelle1.uuid, tabelle1.name as alt, tabelle2.name as neu from tabelle1 inner join tabelle2 on tabelle1.uuid = tabelle2.uuid WHERE tabelle1.name <> tabelle2.name
UNION
...gleiches nochmal für speicher etc

sicher geht das mit etwas T-SQL-Programmierung noch eleganter, so dass man nicht für jede Spalte eine eigene SELECT-Zeile braucht (die Spalten lassen sich ja aus dem Schema einlesen, und dann automatisiert über alle iterieren). Aber da muss man dann schon tiefer einsteigen...

Gruß

Filipp
Bitte warten ..
Mitglied: Taucher4000
20.06.2010 um 19:42 Uhr
Hallo Biber und Filipp,

vielen Dank für die Hilfestellung und den Tipp mit UNION. Mit dem Beispiel von Filipp kann ich meine Anforderung sehr gut und einfach abbilden. Da es aber sehr viel mehr Felder sind, als in meinem Beispiel angegeben, wird die Abfrage ziemlich komplex. Eine Abfrage via Transact-SQL wäre also sicherlich sinnfoll, leider kenne ich mich damit nicht wirklich gut aus.

Aber schon mal vielen Dank für die Hilfe, das bringt mich schon ein ganzes Stück weiter.

Gruß Taucher4000
Bitte warten ..
Ähnliche Inhalte
Datenbanken

MS SQL niedrigster und höchster Datensatz einer Gruppe

gelöst Frage von c0nsp1r4cyDatenbanken7 Kommentare

Guten Morgen allerseits, Tabelle BS beinhaltet alle bestellten Artikel (ArtikelNr, Belegdatum, Stückpreis, Menge, Rabatt). Alle ArtikelNr können mehrmals in ...

Datenbanken

MS SQL - Zwei Summierungen (für Vergleich) in einer Abfrage möglich?

gelöst Frage von BluejetDatenbanken3 Kommentare

Hallo zusammen, es ist sicher ein einfaches Unterfangen, jedoch weiß ich nicht, wie ich es im Moment lösen soll ...

Datenbanken

SQL: Anzahl von Datensätzen bei JOIN

Frage von BirdyBDatenbanken2 Kommentare

Hallo zusammen, ich stehe gerade etwas auf dem Schlauch und hoffe auf eure Hilfe. Gegeben sind in unserer SQL ...

Datenbanken

SQL: Wenn Datensatz älter als . dann

gelöst Frage von PixL86Datenbanken5 Kommentare

Guten Morgen werte Community, habe den Auftrag erhalten, eine kleine Userdatenbank für ein Portal zu bauen. Das klappt auch ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement15 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen14 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware12 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...