Announcement

Collapse
No announcement yet.

Query um Platzhalter (%) erweitern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Query um Platzhalter (%) erweitern

    Hallo ich würde gerne folgende Query erweitern:

    [highlight=SQL]UPDATE oenb_einspielen
    SET oenb_einspielen.Duplikat = 1
    WHERE oenb_einspielen.kundnr IN
    (SELECT oenb_einspielen.kundnr
    FROM oenb_einspielen, oenb
    WHERE (((oenb_einspielen.vorname) LIKE [oenb].[vorname]))
    AND (((oenb_einspielen.nachname) LIKE [oenb].[nachname]))
    AND (((oenb_einspielen.plz) = [oenb].[plz])));[/highlight]

    Diese Abfrage erkennt derzeit nur die Fälle als Duplikat welche von LIKE abgedeckt werden.

    Da Ich die Erkennung aber noch optimieren möchte sollen auch folgende Muster kontrolliert werden:

    [oenb].[vorname]+%
    %+[oenb].[vorname]
    %+[oenb].[vorname]+%

    bzw.
    "LIKE Gernot"
    findet: "Gernot", "Gernoth", "Gernot Peter", ["Peter Gernot"]=> die letzte muss nicht unbedingt sein.

    Falls mir hierzu jemand einen Tipp geben könnte wäre es super ;-)

    LG. jo

    ist dies möglich (in einer Query bzw. weiterem Subquery)
    Zuletzt editiert von ferni; 19.02.2010, 11:53.

  • #2
    [HIGHLIGHT="SQL"]UPDATE oenb_einspielen
    SET oenb_einspielen.Duplikat = 1
    WHERE oenb_einspielen.kundnr IN
    (SELECT oenb_einspielen.kundnr
    FROM oenb_einspielen, oenb
    WHERE (((oenb_einspielen.vorname) LIKE '%'+[oenb].[vorname]+'%'))
    AND (((oenb_einspielen.nachname) LIKE '%'+[oenb].[nachname]+'%'))
    AND (((oenb_einspielen.plz) = [oenb].[plz]))); [/HIGHLIGHT]

    PS: Sollte es wider erwarten kein Microsoft-Sql sein dann + durch || ersetzen
    PPS:SQL formatiert man in diesem Forum am besten so

    Comment


    • #3
      Der Lösungsvorschlag funktioniert leider so nicht. (auch wenn ich die + durch || ersetze)

      Oh, habe gerade gesehen, dass es hier ein MS-Access Unterforum gibt (Habe genau diese Kategorie per google gefunden) - es handelt sich um Access97
      (Meines Wissens SQL92 Standard?)

      Kann meinen Thread jemand verschieben, oder soll ich dort nochmal neu aufmachen?

      Comment


      • #4
        Hallo,
        Originally posted by ferni View Post
        Der Lösungsvorschlag funktioniert leider so nicht. (auch wenn ich die + durch || ersetze)
        Ist keine qualifizierte Fehlerbeschreibung! WAS funktioniert nicht? Werden nicht die erwarteten Daten gefunden? Gibt es einen Syntaxfehler? Dauert die Abfrage zu lange?...

        Originally posted by ferni View Post
        ...Oh, habe gerade gesehen, dass es hier ein MS-Access Unterforum gibt (Habe genau diese Kategorie per google gefunden -
        Und natürlich nicht die Forensuche benutzt oder in anderen Threads gestöbert und beim Posten natürlich auch nicht meine DB-Umgebung genannt...

        Originally posted by ferni View Post
        ...Kann meinen Thread jemand verschieben, oder soll ich dort nochmal neu aufmachen?
        Habe den Thread nach "MS Access" verschoben.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Originally posted by Falk Prüfer View Post
          Hallo,

          Ist keine qualifizierte Fehlerbeschreibung! WAS funktioniert nicht? Werden nicht die erwarteten Daten gefunden? Gibt es einen Syntaxfehler? Dauert die Abfrage zu lange?...
          Sry, für die schlechte Beschreibung. Es werden leider gar keine Datensätze ausgegeben. -> Obwohl er zu 100% welche finden müsste (manuelle Stichprobenprüfung auf das Such-Muster - bei 85.000 Datensätzen + 400 Vergleichsdatensätze müssten schon welche dabei sein) + 1 Fake-Datensatz der zutrifft wurde extra angelegt aber nicht gefunden.

          Originally posted by Falk Prüfer View Post
          Und natürlich nicht die Forensuche benutzt oder in anderen Threads gestöbert und beim Posten natürlich auch nicht meine DB-Umgebung genannt...
          Habe den Thread nach "MS Access" verschoben.
          Gruß Falk
          Mittlerweile hab ich sehr viel gesucht - leider noch keine passende Antwort gefunden.
          Das mit der DB-Umgebung hat sich leider aus meiner google-Suche + schnellem posten ergebn.

          Gruß Jo

          Comment


          • #6
            Hallo Jo,
            (Meines Wissens SQL92 Standard?)
            Und genau das ist nicht der Fall, MS hat da wieder sein eigenes Süppchen gekocht und sich eher gar nicht an den SQL Standard gehalten.

            Als Wildcard musst Du das Sternchen * verwenden, so wie auf File-Ebene.
            + zum Verbinden von Strings geht, ebenfalls &, aber nicht ||.

            Wenn Du also % durch * ersetzt, sollte es gehen.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Hallo Olaf,

              das ist auch nicht ganz richtig. Es gehen sowohl Sternchen als auch Prozentzeichen. Der Knackpunkt sind die Anführungszeichen. Man muss doppelte verwenden also
              "%" oder "*".

              Gruß
              docendo discimus

              Comment


              • #8
                Nein, in MS Access hat noch nie und geht % immer noch nicht; gerade extra noch mal in MS Access 2007 ausprobiert.
                Olaf Helper

                <Blog> <Xing>
                * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                Comment


                • #9
                  Hi Olaf,

                  über ACCESS 2007 kann ich keine Aussage machen. Aber in ACCESS 2002 habe ich es getestet, und es kommt auch das richtige Ergebnis raus. Wesentlich sind wie gesagt die doppelten Anführungszeichen.

                  Mein Statement sah so aus:

                  SELECT * FROM Tabelle1 where b like "%"+c+"%";
                  (b und c sind Felder in Tabelle 1)

                  Gruß
                  docendo discimus

                  Comment


                  • #10
                    Nope, MS Access selbst unterstützt nur *.

                    Ich vermute mal, Du greifst mit ADO auf eine Access Datenbank zu, das wäre was anderes. ADO erwartet % und mappt das dann um, siehe:
                    http://msdn.microsoft.com/en-us/libr...ffice.10).aspx
                    Olaf Helper

                    <Blog> <Xing>
                    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                    Comment


                    • #11
                      Hi Olaf,

                      nix ADO und dgl., ich schicke den Befehl in der ACCESS-Umgebung daselbst in der Abfrage-SQL-Ansicht ab. Was muss ich denn tun, damit Du mir glaubst?

                      Ich habs jetzt gefunden, man kann in ACCESS unter Optionen Tabellen/Abfragen die ANSI 92 Syntax einstellen.


                      Gruß
                      Zuletzt editiert von frauwue; 23.02.2010, 15:24.
                      docendo discimus

                      Comment


                      • #12
                        Ich habs jetzt gefunden, man kann in ACCESS unter Optionen Tabellen/Abfragen die ANSI 92 Syntax einstellen.
                        Haben wir also beide Recht
                        Olaf Helper

                        <Blog> <Xing>
                        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                        Comment

                        Working...
                        X