Dr.Verpeilung 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Hallo Zusammen! Hab da so'n problem mit ner select anweisung: und zwar habe ich eine datenbank mit zwei adresslisten (tabellen): eine "LIVE" adresstabelle und eine zum rumspielen. nun hat einer unserer user in der falschen tabelle adressen markiert die per mail angeschrieben werden sollen. nun möchte ich mir in der "live" tabelle alle adressen anzeigen lassen die davon betroffen wären. dies geht ja wohl so, daß ich einfach die spalte in der die firmenbezeichnung steht, aus beiden tabellen vergleiche und nur die anzeigen lassen die übereinstimmen. Allerdings sollten dabei 1500 datensätze angezeigt werden und nicht nur 700. Das Problem warum nur 700 DS angezeigt werden ist, daß SQL die komplette Spalte miteinander vergleicht und die Firmenbezeichnungen sich ab und zu unterscheiden. Nun möchte ich SQL sagen, daß er beispielsweise nur die ersten 10 Zeichen der Spalte vergleicht und nicht alle. Allerdings weiss ich echt nicht wie. Bisher bin ich so vorgegangen: SELECT * FROM ADDRESSES INNER JOIN x_adressen on addresses.firma = x_adressen.firma1 Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Probier es mal damit: Select a.Firmenname, b.Firmenname from [Tabelle1] a, [Tabelle2] bWhere Left(a.Firmenname, 10) = Left(b.Firmenname, 10)[/Code] Das könnte gehen, wenn ich mich nicht täusche. Ist jetzt aus der kalten gecodet, hab grade kein ISQLW in der Nähe um das mal an ner DB auszutesten. Gruss Carsten Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 14. September 2004 Autor Melden Teilen Geschrieben 14. September 2004 Original geschrieben von phoenixcp Probier es mal damit: Select a.Firmenname, b.Firmenname from [Tabelle1] a, [Tabelle2] bWhere Left(a.Firmenname, 10) = Left(b.Firmenname, 10)[/Code] Das könnte gehen, wenn ich mich nicht täusche. Ist jetzt aus der kalten gecodet, hab grade kein ISQLW in der Nähe um das mal an ner DB auszutesten. Gruss Carsten [/b] perfekt! funktioniert. kannste mir jetzt auch nochmal kurz erklären was da passiert und wie ich die spalte "extra" in der LIVE tabelle update? also alle die übereinstimmen sollen in der spalte "extra" eine 1 bekommen.... Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Was da passiert: Left(Spalte, n) liest die linken n Zeichen der Spalte aus. Das Update könnte mit folgender Konstruktion gehen: UPDATE Live.Extra set "1"Where Left(Live.Firmenname, 10) = Left(Spieltabelle.Firmenname, 10)go[/Code] Teste es aber sicherheitshalber erstmal, da ich das hier aus der kalten Code und nix zum testen habe. Gruss Carsten Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 14. September 2004 Autor Melden Teilen Geschrieben 14. September 2004 Original geschrieben von phoenixcp Was da passiert: Left(Spalte, n) liest die linken n Zeichen der Spalte aus. Das Update könnte mit folgender Konstruktion gehen: UPDATE Live.Extra set "1"Where Left(Live.Firmenname, 10) = Left(Spieltabelle.Firmenname, 10)go[/Code] Teste es aber sicherheitshalber erstmal, da ich das hier aus der kalten Code und nix zum testen habe. Gruss Carsten [/b] da krieg ich immer diesen fehler: the column prefix 'spieltabelle' does not match with a table name or alias name used in the query... Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Du musst natürlich "Spieltabelle" durch den namen deiner Nicht-Live-Tabelle ersetzen. Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 14. September 2004 Autor Melden Teilen Geschrieben 14. September 2004 Original geschrieben von phoenixcp Du musst natürlich "Spieltabelle" durch den namen deiner Nicht-Live-Tabelle ersetzen. *lol* das weiss ich selber... Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 War nur ne Sicherheitsfrage. :) Mal schauen, vielleicht komm ich später nochmal zum testen. Probieren kannst du auch das hier nochmal: Update a.Extra Set "1"Where a.ID (oder wie auch immer das bei dir heisst) in(Select a.ID from Live a, Spieltabelle bWhere Left(a.Firmenname,10) = Left(b.Firmenname, 10))go[/Code] Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 14. September 2004 Autor Melden Teilen Geschrieben 14. September 2004 Original geschrieben von phoenixcp War nur ne Sicherheitsfrage. :) Mal schauen, vielleicht komm ich später nochmal zum testen. Probieren kannst du auch das hier nochmal: Update a.Extra Set "1"Where a.ID (oder wie auch immer das bei dir heisst) in(Select a.ID from Live a, Spieltabelle bWhere Left(a.Firmenname,10) = Left(b.Firmenname, 10))go[/Code] [/b] was meinste denn mit id??? Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Na du wirst ja sicher irgendeinen Primärschlüssel oder sowas in den Tabellen haben oder? Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 14. September 2004 Autor Melden Teilen Geschrieben 14. September 2004 Original geschrieben von phoenixcp Na du wirst ja sicher irgendeinen Primärschlüssel oder sowas in den Tabellen haben oder? richtig. aber der ist in den beiden tabellen unterschiedlich... :( Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. September 2004 Melden Teilen Geschrieben 14. September 2004 Und? Ich zieh den ja auch nur aus der Livetabelle und vergleiche dann die jeweiligen Firmennamen und nicht den Primärschlüssel Zitieren Link zu diesem Kommentar
Dr.Verpeilung 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 Original geschrieben von phoenixcp Und? Ich zieh den ja auch nur aus der Livetabelle und vergleiche dann die jeweiligen Firmennamen und nicht den Primärschlüssel achso... versteh ich aber trotzdem nicht. kannste mir vielleicht nochmal erklären was da genau passiert? was heisst denn zum beispiel "in"? die anweisung hat übrigens funktioniert.... Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Schön das die funktioniert hat. Bin ich doch noch nicht so eingerostet wie ich dachte. :) Das mit dem Select bla from blub where ID_Blub in(Select ID_Blub from BlaBlub)[/Code] ist ein sogenannter Subselect. Auf gut deutsch und dein Problem bezogen: Ich ändere für alle Einträge in Live die Spalte "Extra" auf 1, für die erfüllt ist, das deren ID in dem Resultset den Subselect's vorkommt. Gruss und guten Morgen Carsten Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.