1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Hilfe bei select

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von christianruby, 12 Dezember 2011.

  1. christianruby

    christianruby Benutzer

    Hallo zusammen!

    Sorry, habe keine andere Idee für einen passenden Titel gehabt.
    Nun zu meiner Frage:
    Ich habe die beiden folgenden Tabellen:
    Kunden:
    Feld Stadtteil, Wert= Charlottenburg, Spandau, Rudow

    Objekte:
    Feld Stadtteil, Wert= Spandau

    Wenn ich für ein Objekt einen Kunden suchen möchte, is es kein problem, da funktioniert es mit einem Like (where Stadtteil.kunden like %stadtteil.objekte%)

    aber anders herum, wenn ich für einen Kunden ein Objekt suche, habe ich keine ahnung wie ich das realisiere, da "Charlottenburg, Spandau, Rudow" kein Bestandteil von "Spandau" ist.
    Kann mir da vielleicht jemand helfen?

    Wäre echt super!

    Viele Grüße,

    Christian
     
  2. ukulele

    ukulele Datenbank-Guru

    Du suchst einfach wieder genauso mit WHERE Stadtteil.kunden LIKE %stadtteil.objekte%
     
  3. christianruby

    christianruby Benutzer

    ich habs gerade mal mit folgendem statement probier, ergebnis ist nix.

    select * from Objekte WHERE 'Charlottenburg, Spandau, Rudow' LIKE stadtteil

    und mit
    select * from Objekte WHERE 'Charlottenburg, Spandau, Rudow' LIKE %stadtteil%

    bekomme ich ne fehlermeldung: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%stadtteil% LIMIT 0, 30' at line 1
     
  4. christianruby

    christianruby Benutzer

    ein weiteres problem, wie kann ich zum beispiel
    select * from kunden where stadtteil = 'Spandau' or stadtteil="" and typ='Wohnung'

    so implementieren, dass er mir alle einträge mit Typ=Wohnung und stadtteil=Spandau oder "" ausgibt?
    momentan würde er mir alle einträge mit Typ=Wohnung und stadtteil=Spandau und alle einträge bei denen stadtteil = "" ist, egal was für ein typ eingetragen ist.
     
  5. Walter

    Walter Administrator Mitarbeiter

    Wie wärs mit genau dem, was Dir die Fehlermeldung empfiehlt?

    Und die Lösung hat Dir ukulele eigentlich schon oben hingeschrieben:
    select * from objekte where feldname LIKE '%wert den ich abfrgen möchte%', in Deinem Fall also select * from objekte where stadtteil LIKE '%Spandau%',
    Wobei Du da zusätzlich noch auf Grossschreibung achten musst :)

    Aber aus Deiner Abfrage schliesse ich, dass Du gar keinen LIKE haben möchtest (Wozu dient eigentlich LIKE?) sondern auf eine Werteliste abfragen möchtest. Such mal in meinem Link nach dem Stichwort IN.
     
  6. christianruby

    christianruby Benutzer

    hallo walter!
    Ich glaube, hier liegt ein Missverständnis vor.
    Wenn du meinen ersten Beitrag gelesen hättest, wüsstest du dass " select * from objekte where feldname LIKE '%wert den ich abfrgen möchte%' " in meinem Fall nicht dass ist was ich brauche!
    und wenn du ukulel´s Beitrag richtig gelesen hättest, hättest du gesehen dass er mir "WHERE Stadtteil.kunden LIKE %stadtteil.objekte%" vorschlug.

    Dein vorschlag " select * from objekte where stadtteil LIKE '%Spandau%'," ist nicht die lösung meines problems.
    denn ich habe folgende ausgangssituation:
    Tabelle Kunden:
    Feld Stadtteil, Wert= Charlottenburg, Spandau, Rudow

    Tabelle Objekte:
    Feld Stadtteil, Wert= Spandau

    ich möchte nun für einen Kunden die passenden Objekte suchen. und mit deinem vorgeschlagenen Statement wäre das Ergebnis Null.
    denn übersetzt wäre das statement dann " select * from objekte where stadtteil LIKE '%Charlottenburg, Spandau, Rudow%' "

    Ich habe dies mittlerweile mit MATCH AGAINST gelöst.

    Jedoch bleibt dann noch mein zweites Problem.

    wie kann ich zum beispiel
    select * from kunden where stadtteil = 'Spandau' or stadtteil='' and typ='Wohnung'

    so implementieren, dass er mir alle einträge mit Typ=Wohnung und stadtteil=Spandau und alle einträge mit Typ=Wohnung und stadtteil='' ausgibt?
    momentan würde er mir alle einträge mit Typ=Wohnung und stadtteil=Spandau und alle einträge bei denen stadtteil = "" ist, egal was für ein typ eingetragen ist.
     
  7. christianruby

    christianruby Benutzer

    hat sich erledigt!
    die lösung is simple und lag wohl an dem zulangen drauf starren, dass ich nich selbst drauf kam. 10 minuten päusschen und schon hatte ichs.

    select * from Kunden where (MATCH(stadtteil) AGAINST('Spandau' IN BOOLEAN MODE) or stadtteil='') and Objektart='Wohnung'
     
    Walter gefällt das.
  8. ukulele

    ukulele Datenbank-Guru

    Sehr gut. Aber nochmal, ich komm zwar mit MSSQL aber das hier müsste gehen:
    Wenn du LIKE '%' + stadtteil + '%' machst.
     

Diese Seite empfehlen