hi,
Also leider ist das wohl nicht so einfach wie ich dachte. Ich kenn mich ja nicht aus, aber kann ich da nicht irgendwie irgendetwas machen damit das möglich ist mit dieser Version von MySQL?
ich würde sagen, nein.
bliebe also wohl nur noch, drei einzelne abfragen, je tabelle, zu machen, und diese dann nachher im verarbeitenden script auf ihre relevanz zu prüfen und danach sortiert "ineinander zu mischen".
wenn du dir http://dev.mysql.com/doc/mysql/de/Fulltext_Search.html mal anschaust, siehst du da im zweiten beispiel, wie man sich den "ordnungswert" der relevanz auch mit ausgeben lassen kann, wenn man MATCH ... AGAINST nicht nur in der WHERE-klausel anwendet, sondern auch als "spalte" angibt, die zurückgeliefert werden soll.
mysql> SELECT id,MATCH (titel,artikeltext) AGAINST ('Tutorial') FROM artikel;
+----+------------------------------------------------+
| id | MATCH (titel,artikeltext) AGAINST ('Tutorial') |
+----+------------------------------------------------+
| 1 | 0.64840710366884 |
| 2 | 0 |
| 3 | 0.66266459031789 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+------------------------------------------------+
diese zahlen sind also das sortierkriterium für die relevanz.
wenn du jetzt aus allen drei tabellen so ausliest, dass du diesen wert ebenfalls im ergebnis mitgeliefert bekommst, könntest du dir alle drei abfrageergebnisse in arrays packen.
und beim ausgeben gehst du dann wie folgt vor:
eine schleife, die so lange läuft, wie mindestens zwei der arrays noch ein element besitzt.
in dieser schleife holst du dir dann aus allen arrays, die noch elemente besitzen, das element mit dem jeweils höchsten sortier-wert, und schaust nach, welcher von diesen werten wiederum der höchste ist. dieses element wird dann ausgegeben, und anschliessend mit unset() aus seinem array entfernt.
na und das ziehst du jetzt so lange durch, wie es noch in mindestens zwei der arrays werte gibt.
wenn es nachher nur noch in einem der arrays elemente gibt, werden diese dann anschliessend auch noch sortiert ausgegeben.
(oder fällt jemandem ein, wie man das mit einem zusammenführen der drei einzel-arrays zu einem mittels array_merge und anschliessendem sortieren nach dem sortierkriterium auch einfacher machen könnte?)
gruß,
wahsaga
"Look, that's why there's rules, understand? So that you _think_ before you break 'em."