Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

MySQL Problem Abfrage mit NOT LIKE

uspc / 9 Antworten / Flachansicht Nickles

Hallo, ich habe ein Problem mit einer MySQL Abfrage.

Ich habe 2 Tabellen, bei denen in einer bestimmten Spalte Nummern stehen.

Dabei muss ich mit SUBSTRING arbeiten, um die Nummern an bestimmten Stellen zu vereinheitlichen.

Nummer 1: 000000001876009

Nummer 2: 1876009

Soweit alles ok.

Jetzt möchte ich die Datensätze angezeigt bekommen, die NICHT in der 2. Tabelle enthalten sind.

SELECT tab1.indexnr FROM tab1, tab2   WHERE SUBSTRING(tab1.BS, 8, 7)

NOT LIKE SUBSTRING(tab2.BN, 1, 7);

Umgekehrt geht’s, also wenn ich sage, zeig mir all Daten die in beiden Tabellen vorkommen.

Statt = setze ich NOT LIKE , das bringt aber nicht den umgekehrten Effekt.

Kann jemand helfen? Danke!

Gruß uspc0

bei Antwort benachrichtigen
uspc gelöscht_254676 „Hier wird das mit den Joins ganz gut erklärt, besser als ...“
Optionen

Hallo sunraid,

Danke für den Link, echt gut!

Das mit der recht abgeschnittenen Seite hatte ich bei dir auch, k.A. warum das hier so ist, ich nutze den Firefox. Ich habe beim Eingeben peinlich genau mit einem ENTER eine neue Zeile gesetzt, wenn ich am Rand war. Offensichtlich verkehrt. Vielleicht kann M.N. hier noch was verbessern?

So, ich nehm mal den Textblock oben und setz ihn nochmal rein:

>>> Start Kopie

Danke für die Hilfe. Ich habe in tab1 leider nicht die Index wie in tab2, daher kann ich wohl die Zeile

ON
  t1.id = t2.id


nicht anwenden. Benötigt wird eigentlich nur die Index (also hier die laufende Tabellen-
Eintragsnummer) aus tab1.
Lass es mir beschreiben:
In tab1 sind verschiedene Vorgänge und die Betriebsnummern vieler Betriebe.
In tab2 sind nur Betriebsnummern unserer Kunden mit den Anschiften der Betriebe.
Alle fremden Betriebe will ich aus tab1 in eine baugleiche tab3 verschieben, brauche ich
eigentlich nicht mehr.
Meine Idee war, in der tab1 wie oben beschieben die fremden Betriebe auszulesen, in einem
bestimmten Feld (per Update) diese zu markieren um sie dann in die baugleiche tab3 zu
verschieben. In tab1 sind dann nur noch unsere Kunden.
Für SQL-Profis bestimmt kein Ding, alles in einem Rutsch zu schreiben.
Der Kontrolle wegen und Übersicht wollte ich das nacheinander ablaufen lassen.
Blöd ist, dass die Betriebsnummern in tab1 und tab2 jeweils anders sind, mit
SUBSTRING(tab1.BS, 8, 7)
SUBSTRING(tab2.BN, 1, 7)
sind die Nummern gleich. Ist leider durch ständigen Import so vorgegeben.

Das LEFT JOIN ... ON - kannst du mir das mit 3 Worten ganz einfach übersetzen?
Vielen Dank, ich versuch natürlich auch mich schlauzulesen...
VG uspc

ENDE Kopie <<<<

Hoffe, das klappt jetzt - Danke!

bei Antwort benachrichtigen