Jump to content
Sign in to follow this  
Dr.Verpeilung

Per SELECT Spalten vergleichen

Recommended Posts

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

Share this post


Link to post

Probier es mal damit:


Select a.Firmenname, b.Firmenname from [Tabelle1] a, [Tabelle2] b
Where 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

Share this post


Link to post
Original geschrieben von phoenixcp

Probier es mal damit:


Select a.Firmenname, b.Firmenname from [Tabelle1] a, [Tabelle2] b
Where 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....

Share this post


Link to post

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

Share this post


Link to post
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...

Share this post


Link to post

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 b
Where Left(a.Firmenname,10) = Left(b.Firmenname, 10)
)
go
[/Code]

Share this post


Link to post
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 b
Where Left(a.Firmenname,10) = Left(b.Firmenname, 10)
)
go
[/Code]

[/b]

 

was meinste denn mit id???

Share this post


Link to post
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... :(

Share this post


Link to post
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....

Share this post


Link to post

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

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...