NEWS
[GELÖST]SQL Abfrage wo nur die ersten 3 Buchstaben übereinstimmen müssen
-
Hallo an alle!
Ich bin ziemlich neu beim Umgang mit SQL und ich hoffe Ihr könnt mir etwas weiterhelfen!
Ich versuche schon seit einer gewissen Zeit die Art eine Liste zu erhalten wo alle Strassen mit den ersten 3 Buchstaben übereinstimmen.
Ich bin etwas verzweifelt und hoffe das Ihr mir weiterhelfen könnt.
Ich habe folgende Abfrage angelegt damit PLZ und die Strasse die Doppelt angelegt werden angezeigt zu bekommen:
SELECT A.CardCode, A.CardName, AB.ZipCode, AB.Street
FROM dbo.OCRD A INNER JOIN CRD1 AB ON A.CardCode = AB.CardCode
WHERE AB.Street = (mein Feld) AND AB.ZipCode = (mein Feld)
Dadurch erhalte ich aber nur alle doppelte Datensätze die 100% übereinstimmen. Aber es gibt ja viele Arten eine Strasse zu schreiben, also möchte ich das mir nur die Strassen angezeigt werden die mit den ersten 3 Buchstaben übereinstimmen sowie mit der PLZ.
Vielen lieben Dank an alle im voraus!
-
normalerweise gibt es
Feld like '123%'
für sowas.
Wie das genau deine Datenbank macht musst Du schauen. Bedenke aber das je nach Index-Aufbau du dbei der ABfrage immer einen sog. "Table Scan" machst weil alle Datensätze geprüft werden. Je nachdem wieviel das ist kann das halt dauern.
-
Vielen Dank erstmal für die schnelle Antwort.
Ich schätze mal das du mit " Feld like '123%' sagen möchtest das ich für 123 die gewünschten Buchstaben eingeben muss,oder?
Aber ich möchte das dies Automatisch überprüft wird, egal was für eine Kombination bei einer Strassen Beschreibung gibt in meinen Datensätzen.
Ich hoffe ich habe mich richtig erklärt!
-
Ich verstehe es immer noch nicht ganz.
Entweder Du hast in deiner Applikation/Code einen Strassennnamen und willst wissen welche DB-Einträge mit den gleichen ersten 3 Buchstaben anfangen … dann siehe letzter Post. Du setzt die ersten 3 zeichen ein (anstelle 123) direkt in den Query-String ein in Javascript z.B. mit "strassenname.substr(0,3)"
Oder meinst Du zweiDatenbankfelder hat und wissen willst welche davon gleich anfangen?
MySQL könnte das hier gehen
WHERE SUBSTRING(feld1, 1,3) = SUBSTRING(feld2, 1,3)
-
Tut mir leid wegen den Missverständnisse.
Es geht darum das ich in einen Programm neue Datensätze erstellen möchte. Und wenn ein neuer Kunde, Lieferant erstellt wird und es schon einen Kunden oder Lieferanten gibt der den gleichen PLZ hat und die ersten · Buchstaben von der Strasse, das ich eine Fehlermeldung erhalten soll.
Mit meiner SQL Abfrage erhalte ich eine Fehlermeldung nur wenn die beiden zu 100% übereinstimmen.
Z.B erhalte ich keine Fehlermeldung wenn ich 2 gleiche Kunden erstelle aber eine Strasse als Möllerstrasse schreibe und bei den anderen Kunden : Möllerstr. oder Möllerstraße.
-
Also hast du die Daten in deiner Applikation und kannst das like „abc%“ doch nutzen.
-
Aber dazu müsste ich so viele Einstellungen einrichten damit auch alle Varianten dazugehören.
abc, acb,bac,bca,dfg,gfd,fdg,fgd usw.
Gibt es nicht die möglichkeit um zu sagen LIKE '___%'???
-
Hääääää?! Du hast einen Namen wie die möllerstrasse in deiner applikation. Also baust du die Query mit
Strassefeld like ‚Möl%‘ … also je nachdem was du gerade anlegst
-
Moin
Es muss dann aber like '%___%' lauten, damit die Buchstabenfolge auch z. B. in der Mitte des Straßennamens gefunden werden kann
Gesendet von iPhone mit Tapatalk
-
Es geht ja nicht darum das ich nur ab und zu brauche. Sondern täglich.
Stell dir vor ich habe über 200 Kunden und Lieferanten.
Erstelle jetzt einen neuen Kunden und möchte eine Meldung erhalten wenn ich einen Kunden in der gleichen Strasse mit der gleichen PLZ schon erstellt gehabt habe.
und nicht jedes mal die ersten 3 Buchstaben eingeben. Es gibt ziemlich viele Strassen….
-
Hmm - natürlich gibt's viele Straßen.. und auch viele Wege eine SQL-Abfrage auszuführen… Ich glaube du musst uns mal etwas mehr verraten wo du die Abfrage eigentlich ausführen willst. Wirklich in einem ioBroker-Script? Wenn ja - wodurch wird denn die Abfrage getriggert?
-
Du willst Geschäftspartnerstammdaten innerhalb von SAP Business One in einer Query filtern/selektieren … wo ist da die Verbindung zu ioBroker????
Gesendet von iPad mit Tapatalk
-
Naja- es muss ja nicht gleich SAP sein. Man kann sowas ja durchaus auch "selberbauen" wollen. Allerdings habe ich eben auch so meine Zweifel ob's was mit ioBroker zu tun hat…
Falls nicht @jpw32, könnte man dir ja vielleicht ausnahmsweise trotzdem helfen aber das richtige Forum ist das dann hier sicher nicht...
-
Naja- es muss ja nicht gleich SAP sein. Man kann sowas ja durchaus auch "selberbauen" wollen. Allerdings habe ich eben auch so meine Zweifel ob's was mit ioBroker zu tun hat…
Falls nicht @jpw32, könnte man dir ja vielleicht ausnahmsweise trotzdem helfen aber das richtige Forum ist das dann hier sicher nicht... `
OCRD -> Das ist die Tabelle für Geschäftspartner (GP) in SAP Business One-
CardCode = die Kunden/Lieferantennummer
-
CardName = Kunden/Lieferantenname
CRD1 = ist die erste Untertabelle von OCRD -> Adressen zum GP
CRD2 = wären die Ansprechpartner zum GP
usw.
Ich arbeite seir einigen Jahren bei einem SAP Business One Partner daher erkannte ich die Struktur 8-)
-
-
Ich arbeite seir einigen Jahren bei einem SAP Business One Partner daher erkannte ich die Struktur 8-) `
OK - dann iss klar Aber vielleicht bastelt der TE ja an einer SAP-Integration für ioBroker
-
OK - dann iss klar Aber vielleicht bastelt der TE ja an einer SAP-Integration für ioBroker
Es klingt mehr nach eine Doublettensuche bei der Anlage von GP
s -
Oh Gott, die Nachrichten erst jetzt gesehen.
Ehm, ja hat was mit SAP zu tun, und tut mir leid wenn ich hier falsch bin. Habe nach SQL Abfragen gesucht und bin auf dieser Seite gelandet. Dann habe ich einfach meine Fragen formuliert.
Tut mir leid für das Missverständnis.
Kenn mich so mit Forume nicht wirklich so aus.
-
Hallo Heiko.. Bingo.
Ich suche die SQL Abfrage für eine Doublettensuche!
-
Hallo Heiko.. Bingo.
Ich suche die SQL Abfrage für eine Doublettensuche! `
sei so gut und setzte das Thema in deinem ersten Eintrag auf "gelöst" (siehe nachstehend)[gelöst] SQL Abfrage wo nur die ersten 3 Buchstaben übereinstimmen müssen.
Wir machen dann per PN weiter
-
Ok,
und nochmals sorry für das Missverständnis!