Ankündigung

Einklappen
Keine Ankündigung bisher.

mysql LIKE problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql LIKE problem

    hi leute!

    ich hab folgende abfrage:

    "SELECT * FROM bla_events e, bla_departures d WHERE d.cityId=$id AND e.departures LIKE '%|d.id|%' AND e.partyDate>now()"

    soweit so gut, sollte ja theoretisch auch klappen, aber "e.departures LIKE '%|d.id|%' " funktioniert so nich.
    ich bekomme den wert "d.id" nicht.
    wenn ich bei LIKE direkt ne zahl eingebe, also "e.departures LIKE '%|1|%' " zum beipiel ist es kein problem.

    wie also ist dieses problem zu lösen?
    hoffe ihr könnt mir dabei helfen...


  • #2
    d.id enthält ja auch keine Pipe Symbole...
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      also so wie ich das sehe soll auch nicht d.id diese || symbole beinhalten, sondern e.departures beinhaltet diese symbole inklusive der zahl dazwischen, die von d.id kommt...

      aber anscheinend kann ich kein LIKE nutzen wenn ich damit einen wert abfragen will, den ich im selben query erst herausfinde.

      kann das sein?

      Kommentar


      • #4
        also wenn Du sowas machen willst dann benutze REGEXP oder verknüpfe eben das feld mit den Strings über concat
        'd.id' da wird nach einem String d.id gesucht nicht nach dem Feld...

        Kommentar


        • #5
          Ich glaube hier liegt ein Normalisierungsproblem vor...

          Kommentar


          • #6
            Zitat von HPR1974 Beitrag anzeigen
            also wenn Du sowas machen willst dann benutze REGEXP oder verknüpfe eben das feld mit den Strings über concat
            'd.id' da wird nach einem String d.id gesucht nicht nach dem Feld...
            ich verstehe das zumindest schonmal, dass nach dem string gesucht wird. daumen hoch!

            ich bin leider kein pro in sachen db, darum kenne ich mich mit diesem REGEXP und CONCAT noch nicht aus. gibts irgendwo ne gute deutsche beschreibung der befehle? hab bisher nur englische gesehen und da sind meist soviel fremdworte drin, dass es nicht gerade einfach zu verstehen ist.

            Kommentar


            • #7
              daumen wieder runter, nimm Dir lieber mal das von cycap zu Herzen, Du hast eine id aus einer anderen tabelle irgendwie in einem Tabellenfeld verwurstet, normalisier das und Du hast weniger probleme...
              Danach kannst Du Dich mit stringfunktionen in mysql auseinandersetzen

              Kommentar


              • #8
                Zeig uns mal einen Beispieldatensatz aus deiner DB

                Kommentar


                • #9
                  Zitat von HPR1974 Beitrag anzeigen
                  Danach kannst Du Dich mit stringfunktionen in mysql auseinandersetzen
                  Also ich hab meine Datenbanken schön normalisiert und bisher noch nie eine MySQL-Stringfunktion benutz, bin ich nicht normal?

                  Kommentar


                  • #10
                    weil ich es bisher nicht besser wusste habe ich in dem feld e.departures wo ich LIKE drauf anwende einen string mit || zeichen getrennt.
                    sieht zb so aus: |1||3||13|
                    ich hatte noch keine idee das anders umzusetzen. so kann ich halt in dem string nach LIKE '%|id|%' suchen und ich bekomme das richtige ergebnis. nur halt nicht wenn ich das so mache, wie ich es gestern umgebaut habe.

                    ich wollte bisher verschiedene tabellen mit infos anlegen und diese infos sollten dann in einer tabelle als ids abrufbar sein.. dachte das wär ne gute idee, nur muss ich da wohl noch was umbauen.

                    Kommentar


                    • #11
                      Wie ichs befürchtet habe: du musst normalisieren, da führt kein Weg dran vorbei und du solltest dich in Zukunft bei erstellen des Tabellenlayouts schon an die Regeln halten: 1 Wert in 1 Zelle, nicht mehr und nicht weniger!

                      Was normalisieren heisst und wie du da vorgehst ergoogelst du am besten..

                      Kommentar


                      • #12
                        Zitat von cycap Beitrag anzeigen
                        Also ich hab meine Datenbanken schön normalisiert und bisher noch nie eine MySQL-Stringfunktion benutz, bin ich nicht normal?
                        das ist eine gute Frage...
                        da gibts sicher Wege das herauszufinden...

                        Kommentar


                        • #13
                          "ein wert, eine zelle!"

                          das ist mal ne aussage mit der ich was anfangen kann!

                          also danke erstmal...
                          ich werde es also weiter umbauen und "normalisieren" mal abchecken.

                          Kommentar


                          • #14
                            Darauf, deine Daten zu normalisieren wurdest du ja schon verschiedentlich hingewiesen.
                            Falls du unbedingt mit deiner Struktur weiter arbeiten willst, versuchs mal in die Richtung:
                            PHP-Code:
                            ...
                            WHERE 
                                d
                            .cityId $id
                            AND 
                                
                            e.partyDate NOW()
                            AND 
                                
                            e.departures REGEXP CONCAT('|'d.id'|')
                            ... 
                            Ungetestet.
                            Die Funktionen wären durchaus auch im Handbuch beschrieben
                            Gruss
                            L

                            Kommentar


                            • #15
                              so klappts noch nicht ganz fürchte ich... das konnte ich gerade schnell testen.

                              ich kanns auch erst freitag wieder richtig angehen. heute und morgen keine zeit für den spass!

                              aber danke nochmal!

                              ach ja: hab mir mal diesen normalform link angesehen... so meinte ich das auch mit der struktur... meine anderen tabellen sind halt so aufgebaut. ich werde das also auch ändern. das löst einige wahrscheinlich komplizierte bearbeitungsvorgänge beim späteren administrieren denk ich!

                              Kommentar

                              Lädt...
                              X