derposchi
Goto Top

SQL - Vergleich von Datensätzen

Hallo zusammen!

Ich habe folgendes Problem:
In unserer Datenbank gibt es eine Tabelle, in welcher technische Merkmale von Maschinen (Spannung, Strom, Leistung, ...) gespeichert werden.
Insgesamt beinhaltet diese Tabelle weit über 100 Felder.
Wenn jetzt eine Maschine umgebaut wird und sich dadurch deren technische Merkmale verändern, kommt für diese Maschine ein weiterer Datensatz in die Tabelle.
Ich bin jetzt auf der Suche nach einem SQL-Statement, welches die beiden Datensätze dieser Maschine miteinander vergleicht und mir die Unterschiede ausgibt.

Beispiel:

DS1 DS2
Seriennr.: 12345 12345
Version: 1 2
Spannung: 230 V 400 V
Strom: 4 A 4 A
Leistung: 0,7 kW 1,2 kW
Drehzahl: 1500 1500

Der Vergleich sollte dann folgendes Ergebnis bringen:

Version: 1 2
Spannung: 230 V 400 V
Leistung: 0,7 kW 1,2 kW

Bei der Datenbank handelt es sich übrigens um einen MS SQL-Server 2000.

Kennt jemand eine Möglichkeit für einen solchen Vergleich?

Viele Grüße,
der Poschi

Content-ID: 90656

Url: https://administrator.de/forum/sql-vergleich-von-datensaetzen-90656.html

Ausgedruckt am: 23.12.2024 um 09:12 Uhr

Wampe
Wampe 25.06.2008 um 17:13:10 Uhr
Goto Top
Ahoi

vorweg ... Ist eine Seriennummer nicht "einmalig" .. sprich beide Geräte können diese doch gar nicht haben, oder?

Ich würde von beiden Geräten einfach dem kompletten Datensatz abfragen und bei der Ausgabe entsprechend vergleichen lassen und nur bei unterschiedlichen Werten eine Ausgabe machen lassen.

gruß Dennis
derPoschi
derPoschi 25.06.2008 um 17:25:45 Uhr
Goto Top
Hi Dennis!

Vielen Dank für Deine Antwort!
Seriennummern sind auch bei uns einmalig, da es sich ja in beiden Fällen um die selbe Maschine handelt. Es wird an dieser Maschine nur ein evtl. etwas modifiziert, sodass sich einzelne Parameter ändern können.

Die Möglichkeit, beide Datensätze komplett abzurufen und dann später auszuwerten, habe ich auch schon in Betracht gezogen. Das Problem ist nur, dass die Software, in der das ganze dann angezeigt werden soll, sich sehr leicht mit einer SQL-Abfrage füttern lässt. Wenn ich die Auswertung programmtechnisch realisieren will, muss in den Seitenaufbau richtig Arbeit gesteckt werden. Eine SQL-Lösung wäre mir also deutlich lieber.
Irgendwelche Vorschläge?

Gruß,
der Poschi
Wampe
Wampe 25.06.2008 um 18:10:57 Uhr
Goto Top
Gibt der Anwender die Maschine Explizit an ala "Ich möchte die unterschiede der Maschinen SN: 12345 haben" oder soll eine Gesamtausgabe von allen Maschinen, wo Veränderungen vorgenommen wurden, gemacht werden?
derPoschi
derPoschi 26.06.2008 um 11:34:55 Uhr
Goto Top
Moin Dennis!

Es geht jeweils nur um die Änderungen an einer ausgewählten Maschine.Der Anwender soll also die Möglichkeit bekommen, sich von der Infoseite einer Maschine aus anzeigen zu lassen, was sich daran geändert hat.

Viele Grüße,
der Poschi
SvenGuenter
SvenGuenter 01.07.2008 um 16:22:54 Uhr
Goto Top
SELECT version,spannung,leistung from TABELLE WHERE seriennummer = '12345'  
 


liefert das gewünschte Ergebnis. Ich verstehe den Vergleich nicht ganz. Was willst du denn vergleichen? Ich verstehe das so das du einfach die Daten zu den Maschinen haben willst. Oder möchtest du nur die Maschinen haben wo es mehr als einen datensatz für gibt?
Dann muss man das mit einem Subselect lösen

Gruß Sven
derPoschi
derPoschi 01.07.2008 um 16:32:38 Uhr
Goto Top
Hallo Sven!

Das Problem ist folgendes: Die Tabelle enthält nicht nur 4 oder 5 Spalten, wie hier im Beispiel, sondern über 100. Ich weiß natürlich nicht, in welchen Spalten es Unterschiede zwischen den verschiedenen Versionen gibt. Wenn ich mir also alle Spalten ausgeben lasse, muss sich irgendjemand hinsetzen und sämtliche Spalten überprüfen, ob es dort eine Änderung gibt. Genau das möchte ich verhindern. Ziel ist also, dass in der Abfrage nur genau die Spalten ausgegeben werden, in denen es zwischen Version 1 und 2 einen Unterschied gibt; Spalten, in denen es keine Änderung gab, sollen nicht ausgegeben werden (siehe Beispiel oben).
SvenGuenter
SvenGuenter 01.07.2008 um 16:54:19 Uhr
Goto Top
ok nun habe ich es. Setze mich nachher mal hin und bastel dir was. Falls nicht jemand schneller sein sollte.

Nur zum Verständnis.

Du willst zu irgendeinen Artikel ( hier Maschinen ) nur die Spalten bekommen die sich unterscheiden. Richtig?

Gruß

Sven
derPoschi
derPoschi 01.07.2008 um 17:05:10 Uhr
Goto Top
Hi Sven!

Ja, genau! Nur die Spalten, die sich unterscheiden. Wie oben im Beispiel:
Spannung ist bei Version 2 anders als bei Version 1 -> Spannung wird ausgegeben.
Strom unterscheidet sich nicht -> Strom wird nicht ausgegeben.
usw...

Gruß,
Poschi