Mailinglisten-Archive |
Hallo, das Problem läßt sich nicht trivial lösen. Eine Lösung benutzt Subqueries, die nur ab MySQL 5 unterstützt werden. Eine andere Lösung würde über eine Middelware realisiert, die Annahmen über die Anzahl der zu testenden Ausdrücke macht (bei "Hallo Welt" sind es 2) und dann eine passende Query "zusammenschreibt". Letzteres läuft bei 2 Suchbegriffen mit einem Self-Join und für jeden weiteren Begriff ein weiterer Self-Join. Allgemein geht das jedoch nicht. Mein Versuch für 3: SELECT t1.benutzer_id, t1.suchbegriff, t2.suchbegriff, t3.suchbegriff FROM tbl_suchbegriffe t1, tbl_suchbegriffe t2, tbl_suchbegriffe t3 WHERE t1.benutzer_id = <gesuchte_id> AND t1.suchbegriff = <gesuchter_begriff_1> AND t2.benutzer_id = t1.benutzer_id AND t2.suchbegriff = <gesuchter_begriff_2> AND t3.benutzer_id = t1.benutzer_id AND t3.suchbegriff = <gesuchter_begriff_3> Mit nem Index auf (Benutzer_id,suchbegriff) sollte die Abfrage auch zügig sein. Zu den Subqueries siehe http://dev.mysql.com/doc/refman/5.0/en/any-in-some-subqueries.html und http://dev.mysql.com/doc/refman/5.0/en/all-subqueries.html Leider bietet MySQL keinen einfachen Operator wie CONTAIN(S) für Mengen an. So daß es glaub ich auch auf die Lösung mit einem x-fachen Self-Join hinausläuft. Gruß, Christoph -- Fingerprint=65B7 73B6 5969 AC2B 4572 39A2 0DBC DAC1 3D6A 45B7 ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive