Matzeeee: 2 Tabellen vergleichen und Unterschiede ausgeben

Einen schönen Abend wünsche ich euch!

Ich suche zur Zeit eine Möglichkeit Daten aus 2 verschiedenen Tabellen zu vergleichen und Unterschiede auszugeben.
Grund:

Shop Datenbank
   Tabelle1 = Bestellungen
   Tabelle2 = Sicherung der Bestellungen

Nun möchte ich in einem kleinen Tool anzeigen lassen, ob Daten unterschiedlich in den Tabellen stehen, da man doch ab und an Daten anpassen muss...

meine Ansätze:

  
SELECT  
t1.order_id,  
t1.address_firstname,  
t1.address_lastname  
FROM tbl1 AS t1  
LEFT JOIN tbl2 AS t2  
ON t2.order_id=t1.order_id  
WHERE order_id=1  
AND  
t1.address_firstname <> t2.address_firstname  
OR  
t1.address_lastname <> t1.address_lastname

-> Gibt #1052 - Column 'order_id' in where clause is ambiguous  aus, was ich nicht so ganz verstehe wieso..

zweiter Ansatz:

  
SELECT order_id, address_firstname, address_lastname  
FROM tbl1  
WHERE order_id=1  
AND (order_id, address_firstname, address_lastname) NOT IN (SELECT order_id, address_firstname, address_lastname  
FROM tbl2 WHERE order_id=1)  

--> was haltet ihr davon? Ist aber irgendwie ziemlich langsam... und ich weis nicht ob das so richtig arbeitet wie es sollte

Wäre dankbar für Hilfe :) Grüße Mathias

  1. moin,

    -> Gibt #1052 - Column 'order_id' in where clause is ambiguous  aus, was ich nicht so ganz verstehe wieso..

    ich schon, sind denn wirklich alle spalten mit dem Tabellen präfix besetzt ?

    --> was haltet ihr davon? Ist aber irgendwie ziemlich langsam... und ich weis nicht ob das so richtig arbeitet wie es sollte

    gib uns mal sinnvolle beispieldaten und die gewünschte ergebnismenge....

    Ilja

    1. Danke für die Antwort,

      ich schon, sind denn wirklich alle spalten mit dem Tabellen präfix besetzt ?

      Ja, jeder Datensatz in der jeweiligen Tbl hat die order_id als eindeutige Zuweisung.

      gib uns mal sinnvolle beispieldaten und die gewünschte ergebnismenge....

      gewünschte Ergebnismenge ist natürlich NULL ;) aber falls zB in tbl1 der firstname anders ist, als der aus tbl2 soll spalte firstname ausgegeben werden.

      Beispieldaten:

      DB: shop
      tabelle1 = aktuelleTabelle
          spalte1 = order_id
          spalte2 = vorname
          spalte3 = nachname
      tabelle2 = sicherungVonTabelle1
          spalte1 = si_order_id
          spalte2 = order_id
          spalte3 = vorname
          spalte4 = nachname

      wenn nun der Vorname in Tabelle1 geändert wird soll er diese Unstimmigkeit ausgeben

      Greez Matze

      1. Hi,

        ich schon, sind denn wirklich alle spalten mit dem Tabellen präfix besetzt ?

        Ja, jeder Datensatz in der jeweiligen Tbl hat die order_id als eindeutige Zuweisung.

        Es geht nicht um die Datensätze, sondern um die Angabe der Spalte in der Query.

        WHERE order_id=1

        Ja, welche ist denn da jetzt bloß gemeint - die aus Tabelle1, oder die aus Tabelle2 …?
        Das hast du uns und deinem DBMS nicht gesagt – und deshalb beschwert sich letzteres zu Recht bei dir darüber.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. hi,

    Shop Datenbank
       Tabelle1 = Bestellungen
       Tabelle2 = Sicherung der Bestellungen

    Da hast Du die Daten dann redundant, muss nicht sein, anderer Vorschlag: Setze ggf. noch ein Feld ein, damit Du zwischen offenen und abgeschlossenen Bestellungen eine andere Ansicht erzeugen kannst. Erzeuge einen sinnvollen Index, damit die Abfragen auf die gewünschten Ansichten performant werden.

    Hotti