Tabellen vergleichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabellen vergleichen

    Hallo,

    sorry, ich habe im Forum schon gesucht.
    Aber irgendwie seh ich den Wald vor lauter Bäume nicht mehr.

    Ich habe zwei Tabellen: tabellea und tabelleb
    Eindeutige Identifizierung ist die artikelnr

    In beiden Tabellen stehen dieselben Felder (sind ca 60 Stück)
    preis, groesse, farbe, ...

    Der Kunde liefert mir nun jede Woche eine neue csv-Datei.
    Ich lade die neue Datei in eine mysql-tabelle ein (tabelleb)

    Wie kann ich nun die beiden Tabellen vergleichen?
    (inklusive farbe, groesse etc)

    Und dann die zeilen ausgeben, die anders sind.

    Danke
    Sandra

  • #2
    PHP-Code:
    select tabellea.artikelidtabellea.farbetabellea...
    from tabelleatabelleb where tabellea.artikelnr!=tabelleb.artikelnr 
    du musst nach dem select alle felder der tabellea aufführen, da bei * er nicht weiß, aus welcher tabelle er was auflisten soll. wenn ich dein problem soweit richtig verstanden habe, sollte es das sein?!?
    ich geh zum lachen in den keller

    Kommentar


    • #3
      der bringt mir dann aber alle datensätze.
      und das mehrfach !!!

      wenn ich tabellea.artikelnr = tabelleb.artikelnr mache,
      bringt er mir den einen, der nicht gleich ist, nicht.

      er mag wohl das != nicht , oder?

      Kommentar


      • #4
        der bringt mir dann aber alle datensätze.
        und das mehrfach !!!
        dann schreib mal bitte
        PHP-Code:
         select distinct ... 
        das sollte den mehrfachaufruf unterbinden.

        das != sollte eigentlich anstandslos funktionieren, aber falls nicht, dann probier es mal mit
        PHP-Code:
        where NOT tabellea.artikelnr=tabelleb.artikelnr 
        ich geh zum lachen in den keller

        Kommentar


        • #5
          ist doch ziemlich straight forward ... und hier hat mal wieder jemand nicht aufmerksam gelesen. Kami - wie warst Du in der Schule so mit Textaufgaben?

          Du willst dem DB-Server folgendes sagen:
          Liefere mir datensätze aus a und b mit gleicher artikelnr, die nicht vollständig identisch sind.

          anders ausgedrückt:
          Zeige Datensätze aus tabellea, tabelleb mit tabellea.artikelnr=tabelleb.artikelnr und (tabellea.feld1<>tabelleb.feld1 oder tabellea.feld2<>tabelleb.feld2 oder ...)
          <=>
          select tabellea.*, tabelleb.* from tabellea, tabelleb where tabellea.artikelnr=tabelleb.artikelnr and (tabella.preis<>tabelleb.preis and tabellea.groesse<>tabelleb.groesse and tabellea.farbe<>tabelleb.farbe and ...)

          Die Anzahl der Felder könnte ein Problem liefern; nun kommt es auf die Anzahl der unterschiedlichen Datensatz-Paare an, ob Du eine Schleife machst in der Du jeweils nur einen Teil der Felder abprüfst und die jeweiligen Teilergebnisse in einem Array sammelst.
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Und dann die zeilen ausgeben, die anders sind.
            was will sie uns damit sagen? ich habe es so verstanden, dass in der neuen csv auch noch alte datensätze enthalten sind, die sie schon in der tabelle hat. also sollten nach der abfrage nur noch die datensätze rauskommen, die neu sind, damit sie die dann z.b. in ihre db einfügen kann. also identifiziere ich das ganze nach
            Eindeutige Identifizierung ist die artikelnr
            so dachte ich mir das, wenn sie das jetzt aber so meint, dass die anzahl und artikelnr der datensätze gleich bleiben und sich da z.b. die farbe der kettensäge ändert, dann hast du recht.

            schieben wir es auf die formulierung.
            ich geh zum lachen in den keller

            Kommentar

            Lädt...
            X