Crypto: Stichwortsuche

Hi, Leute!
Meine Datenbank besteht (u.a) aus den Tabellen Branchen (Branchen-namen u. -IDs), Wirtschaft (Unternehmens-IDs, -namen u. -standorte) und Stadt (Stadt-IDs, -namen)
Ich möchte jetzt die Felder branchen.deutsch (Branchenname), wirtschaft.name (Unternehmensname) und stadt.name auf das eingegebene Suchwort überprüfen.
Mein Ansatz:

$my_query="select distinct wirtschaft.name, wirtschaft.wid, wirtschaft.stichworte, wirtschaft.web, wirtschaft.cid, branchenwirtschaft.bid, branchenwirtschaft.wid, branchen.bid, branchen.deutsch, stadt.cid, stadt.name ";
 $my_query.="from wirtschaft, branchenwirtschaft, branchen, stadt where ";
 $my_query.="(branchen.bid=branchenwirtschaft.bid and wirtschaft.wid=branchenwirtschaft.wid and wirtschaft.cid=stadt.cid) ";
 $my_query.="and (wirtschaft.name like '%".$suche."%')";
 $suche_query=mysql_query($my_query,$db);
 if (mysql_num_rows($suche_query)>0)
  {
   while($var=mysql_fetch_array($suche_query))
    {
     echo("<br>".$var[0]);
    }
  }

"Branchenwirtschaft" wird hierbei benötigt, um eine m:n-Beziehung zwischen "Branchen" und "Wirtschaft" herzustellen.
In diesem beschriebenen Ansatz wird nur der Unternehmensname mit dem Suchwort überprüft, das soll später noch auf die beiden anderen genannten Felder ausgeweitet werden.

MfG, Crypto!!!

  1. Hi,

    was ist eigentlich jetzt das Problem? Du suchst doch "Dresden" sicherlich nicht in [wirtschaft].[name] noch in [branchen].[deutsch]?
    Vielleicht möchstest du einfach nur 3 einzelne Queries machen, 1x spezifisch für die Suche nach [wirtschaft].[name], 1x spezifisch für [branchen].[deutsch], 1x für ....

    Möchtest du jetzt noch die Relevanz auswerten, d.h. Treffer für mehrere Stichworte besser bewerten. Z.b. Stadt und Branche gefunden ist besser als nur Branche? Oder möchtest du die Ergebnisse einfach nur ver-ODERn?

    Welche Version von MySQL benutzt du?

    Davon abhängig kannst du mehrere Resultsets mit gleichförmigen Spalten durch den UNION Operator zusammenfassen, à la

      
    SELECT feldInt, feldString, feldUUID  
    FROM tabelle1  
    -- WHERE  
    UNION (ALL)  
    SELECT feldInt, feldString, feldUUID  
    FROM tabelle2  
    -- WHERE  
    
    

    HTH, Frank