phpbar.de logo

Mailinglisten-Archive

AW: Wie gestaltet man diese Abfrage ?

AW: Wie gestaltet man diese Abfrage ?

Benjamin Wolf bwolf at mailserv.wiesloch.shs-it.de
Don Okt 20 09:54:39 CEST 2005


Hi!

Tausend Dank schomal für euere Antworten.
Ich bin etwas enttäuscht, das das ganze nicht dynamisch realisiert werden
kann.
Ich hätte dem User gerne die Möglichkeit gegeben, nach beliebig vielen
Suchbegriffen zu suchen.

Habe ich mir eine umständliche Struktur herausgesucht und gibt es vieleicht
bessere Wege das zu lösen ?



Mit freundlichen Grüßen,
B.Wolf (SHS - Systemhaus Schroeter)

-----Ursprüngliche Nachricht-----
Von: Christoph 'Leo' Weißenborn [mailto:chw-le at gmx.de]
Gesendet: Mittwoch, 19. Oktober 2005 16:49
An: mysql-de at lists.4t2.com
Betreff: Re: Wie gestaltet man diese Abfrage ?


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


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive