Spalten mit mehreren Werten vergleichen

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

  • Spalten mit mehreren Werten vergleichen

    Ich finde hierzu keinen passenden Lösungsweg.

    Ich habe EINE Tabelle mit vielen Datensätzen. Darin enthalten sind Keywords.
    In der einen Zelle steht 'hund katze maus' und in einer anderen steht z.B. 'tiger esel hund' (Kann auch gerne durch einen Seperator getrennt sein)

    Ich möchte nun gerne in allen Datensätzen nach einem der drei Wörtern suchen. In dem Beispiel würde z.B. 'hund' übereinstimmen.
    Weiss vielleicht jemand wie man das in eine SQL Abfrage packt ??

    Cu Susi
    Last edited by SusiSorglos; 26-02-2010, 06:49.
    PHP 8.0, MariaDB 10.5 auf U20.04

  • #2
    Code:
    SELECT
      was_weiss_ich_was
    FROM
      tabelle
    WHERE
      ueberdenkenswerte_spalte LIKE '%HUND%'
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Comment


    • #3
      neeee. so war das nicht gemeint.

      Es soll nur dann ein Result liefern wenn das Wort "hund" ODER "katze" ODER "maus" enthalten ist.

      Ich habe also einen String mit einer unbestimmten Anzahl von Wörtern die durch ein SPACE oder "," getrennt sind.
      PHP 8.0, MariaDB 10.5 auf U20.04

      Comment


      • #4
        wie sieht die tabelle denn jetzt aus?

        Code:
        id  |  keyword
        --------------
        1  | hund
        --------------
        2  | katze
        --------------
        3  | fisch
        
        oder so
        
        id  |  keyword  |  keyword2  | keyword3
        --------------------------------------
        1  | hund        |  katze       |  fisch
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Comment


        • #5
          Nagut... nochmal etwas genauer.

          Ich betreibe ein NewsPortal. Jedem Artikel möchte ich nur ca 3 Keywords zuweisen. Diese werden dann zum jeweiligen Artikel in EINE Spalte geschrieben.

          Wenn nun ein anderer Artikel auch innerhalb der Spalte "keywords" z.B. den Begriff "Auto" notiert hat, möchte ich dies somit verknüpfen und dem Leser als Linkvorschlag ausgeben.
          Wenn der Leser sich für (Auto, Porsche, reifen) interessiert -> interessiert er sich sicherlich auch für (Auto, Ferarri, schnell)

          Das klappt. Es läuft schon, aber leider bekomme ich es nur mit EINEM Wort hin. Es wäre aber sicherlich von vorteil, wenn es mehrere Keyword enthalten könnte.

          Ich hoffe das war etwas verständlicher!?

          Cu Susi
          Last edited by SusiSorglos; 26-02-2010, 10:05.
          PHP 8.0, MariaDB 10.5 auf U20.04

          Comment


          • #6
            Originally posted by SusiSorglos View Post
            Ich hoffe das war etwas verständlicher!?i
            ja, aber besser macht es die Sache nicht :-)

            PHP Code:
            $string_keywords "hund,katze, fisch";
            $ar_key explode(","$string_keywords);
            $ar_like = array();
            for(
            $i=0$i<count($ar_key); $i++)
            {
              
            $str trim($ar_key[$i]);
              if(!empty(
            $str))
              {
                
            $ar_like "'".mysql_real_escape_string($str)."'";
              }
            }

            $where '';
            if(
            count($ar_like))
            {
              
            $where "(\nkeywords LIKE ";
              
            $where .= implode(" OR keywords LIKE "$ar_like);
              
            $where .= "\n)\nAND";
            }

            $query "SELECT
              id_artikel
            FROM
              artikel_tabelle
            WHERE
              "
            .$where."
              freigabe = 1 /* oder was auch immer Du so brauchst */"
            ;

            // TODO: run query 
            h.a.n.d.
            Schmalle

            http://impressed.by
            http://blog.schmalenberger.it



            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
            ... nur ohne :-)

            Comment


            • #7
              Vielen Dank für Deine Mühe.
              Das könnte so klappen.

              Ich hatte nur gehofft das es vielleicht ganz ohne php geht. Weil ich ca 20-30 Artikel auf einmal auslese und diese dann jeweils mit 1000 Artikel vergleichen muss. Sind dann 20.000 - 30.000 Abfragen pro Seite und User. Das müsste man dann wohl schon über Temp machen.

              Ich werde es heute Abend mal dem php Umweg probieren. Mal sehen wie sehr es das System belastet.

              Bis heute Abend.

              Cu susi
              PHP 8.0, MariaDB 10.5 auf U20.04

              Comment


              • #8
                Hallo Susi,

                besser du normalisierst die DB noch ein bisschen, lagerst Keywords in eine eigene Tabelle aus und verbindest die über eine n:m-Relation mit der Artikeltabelle.

                Dann kannst du das Suchen nach ähnlichen Artikeln gleich in einer Abfrage erledigen und sogar noch mit einer einfachen Relevanzsortierung ausstatten.

                Gruß,

                Amica
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Comment


                • #9
                  Ist ja nicht das erste mal, dass dir die Normalisierung ans Herz gelegt wird. Aber gelernt hast du aus den vermeidbaren Problemen der Vergangenheit immer noch nicht...

                  Comment

                  Working...
                  X