kerki: select ob was nicht da is ...

Beitrag lesen

Hallo Korbinian!

versteht ihr ?

Sicher bin ich mir da nicht, ich versuch's mal :

Du speicherst eine Tabelle 'newslistenew' zu einem bestimmten Zeitpunkt als Kopie 'newslisteold' ab und möchtest zu einem späteren Zeitpunkt ermittelt, in welchen Datensätzen von 'newslistenew' Änderungen an den Feldern 'bestnr' oder 'dm' sich seit Erstellung der Kopie ergeben haben.

Ich hoffe so war es gemeint.

Dazu zunächst folgendes:

Klappen wird das Ganze nur, wenn wenigstens noch ein anderes _eindeutiges_ Feld in der Tabelle vorhanden ist, das einen Bezug zwischen den neuen und der alten Version der Tabelle herstellt.

Ansonsten wird es nicht gelingen, bei einem Vergleich 'neuer Datensatz' != 'alter Datensatz' festzustellen, ob hier 1 Datensatz verändert wurde, oder ob die 2 schon vorher unterschiedlich waren.

In deinem speziellen Fall könnte 'bestnr' so ein Feld sein, vorausgesetzt, dass es gar nicht verändert, sondern nur hinzugefügt werden kann. Dann könnte deine Abfrage so aussehen:
----------------------------------------------------
SELECT    newslistenew.*
FROM      newslistenew
LEFT JOIN newslisteold USING (bestnr)
WHERE     newslistenew.dm != newslisteold.dm
OR        newslisteold.bestnr IS NULL
----------------------------------------------------

Wenn aber auch 'bestnr' verändert werden kann, müsste die Abfrage so lauten:
----------------------------------------------------
SELECT    newslistenew.*
FROM      newslistenew
LEFT JOIN newslisteold USING (id)
WHERE     newslistenew.bestnr != newslisteold.bestnr
OR        newslistenew.dm != newslisteold.dm
OR        newslisteold.id IS NULL
----------------------------------------------------

wobei dann 'id' ein solches eindeutiges Feld sein müsste, dass bei beiden Tabellen gleich ist.

Wenn sich solch ein Feld nicht finden lässt, sehe ich keine Lösung für dein Problem. (was nicht heißen muss, dass es keine gibt ;-) )

Als Literatur empfehle ich hierzu :
http://www2.rent-a-database.de/mysql/mysql.html im Allgemeinen und
http://www2.rent-a-database.de/mysql/mysql-118.html, was dein spezielles Problem anbetraf.

Die verwendete Syntax ist MySQL und getestet habe ich es mit Version 3.21.29a. Für andere Syntax übernehme ich keine Garantie (und für Tippfehler auch nicht ;-) )

Ich hoffe, das war, was du gesucht hast.

Gruß,
kerki