Thomas E.: mysql5: Tabellen vergleichen

Hallo Forum,

noch eine Frage von mir:

Ist es möglich, 2 Tabellen miteinander zu vergleichen und sich je Datensatz den Unterschied einer Spalte ausgeben zu lassen?

Beispiel:

Tabelle_1 hat die Spalten:

ID, Nummer, datum, bemerkung, sonstiges, aktiv, test

Tabelle_2 hat die Spalten:

ID, Nummer, datum, bemerkung, sonstiges, aktiv, test

Nun möchte ich als Ergebniss die Unterschiede der Spalte "aktiv" zu jedem Datensatz haben.

Kann ich das über nur 1 Query machen?

Zusatzfrage:

Kann ich über 1 Query den Unterschied aller Spalten ausgeben lassen,die dieselbe ID haben?

Viele Grüße

Thomas

  1. Hi Thomas.

    Tabelle_1 hat die Spalten:

    ID, Nummer, datum, bemerkung, sonstiges, aktiv, test

    Tabelle_2 hat die Spalten:

    ID, Nummer, datum, bemerkung, sonstiges, aktiv, test

    Geht es um zwei Versionen (von verschiedenen Zeitpunkten) derselben Tabelle, oder was hast Du vor? (Ansonsten sehe ich keinen Grund, da überhaupt zwei verschiedene Tabellen zu haben).

    Nun möchte ich als Ergebniss die Unterschiede der Spalte "aktiv" zu jedem Datensatz haben.

    Zu jedem Datensatz aus welcher Tabelle? Ich rate mal: Den Unterschied zwischen je zwei Datensätzen asu den beiden Tabellen, die denselben Primary Key haben?

    Mach mal'n Beispiel: Wie sehen Deine Datensätze aus, und wie soll in der Ausgabe der "Unterschied" aussehen?

    Kann ich das über nur 1 Query machen?

    Je nachdem, was Du eigentlich gerne willst: Wahrscheinlich ja.

    Zusatzfrage:

    Kann ich über 1 Query den Unterschied aller Spalten ausgeben lassen,die dieselbe ID haben?

    Was ist die ID einer Spalte?

    Viele Grüße,
    der Bademeister

    1. Hi Bademeister,

      Geht es um zwei Versionen (von verschiedenen Zeitpunkten) derselben Tabelle, oder was hast Du vor? (Ansonsten sehe ich keinen Grund, da überhaupt zwei verschiedene Tabellen zu haben).

      Ja, genau darum geht es.

      Nun möchte ich als Ergebniss die Unterschiede der Spalte "aktiv" zu jedem Datensatz haben.

      Zu jedem Datensatz aus welcher Tabelle? Ich rate mal: Den Unterschied zwischen je zwei Datensätzen asu den beiden Tabellen, die denselben Primary Key haben?

      Ja. Das meinte ich fast. Denn es geht weniger um einen primary Key.
      Mein Problem ist, dass es in den Daten eigentlich einen einheitlichen Schlüssel geben solle.

      Mach mal'n Beispiel: Wie sehen Deine Datensätze aus, und wie soll in der Ausgabe der "Unterschied" aussehen?

      Im Prinzp geht es um eine (bzw. zwei) Artikeltabellen, bei denen sich teilweise Artikelnummern geändert haben.
      Meine Frage an die DB wäre "nenne mir alle Artikel, die dieselbe Bezeichnung haben, den selben EK haben, den selben VK haben, denselben (hier kommen noch 2-3 Spalten) und NICHT dieselbe Artikelnummer haben.

      Als Antwort wäre schön, wenn mir mysql in der Art antwortet:

      Artikelbezeichnung xyz, Artikelnummer Tabelle1, Artikelnummer Tabelle 2
      Artikelbezeichnung abc, Artikelnummer Tabelle1, Artikelnummer Tabelle 2
      Artikelbezeichnung def, Artikelnummer Tabelle1, Artikelnummer Tabelle 2

      Schöne Pfingstgrüsse

      Thomas

      1. Im Prinzp geht es um eine (bzw. zwei) Artikeltabellen, bei denen sich teilweise Artikelnummern geändert haben.
        Meine Frage an die DB wäre "nenne mir alle Artikel, die dieselbe Bezeichnung haben, den selben EK haben, den selben VK haben, denselben (hier kommen noch 2-3 Spalten) und NICHT dieselbe Artikelnummer haben.

        Als Antwort wäre schön, wenn mir mysql in der Art antwortet:

        Artikelbezeichnung xyz, Artikelnummer Tabelle1, Artikelnummer Tabelle 2
        Artikelbezeichnung abc, Artikelnummer Tabelle1, Artikelnummer Tabelle 2
        Artikelbezeichnung def, Artikelnummer Tabelle1, Artikelnummer Tabelle 2

        Ok, das sieht doch machbar aus. Die Spalten der (temporaeren) Tabelle, die Du haben willst, sind also

        Artikelbezeichnung, Tabelle1.Artikelnummer, Tabelle2.Artikelnummer.

        Eine Tabelle, in der Du die findest, ist der inner join der Tabellen Tabelle1 und Tabelle2, die "join_condition", wie sie in der Doku heisst, ist, dass Tabelle1.Artielbezeichnung = Tabelle2.Artikelbezeichnung und Tabelle1.Artikelnummer <> Tabelle2.Artikelnummer ist.

        Oder?

        Viele Gruesse,
        der Bademeister