Schorsch: MYSQL: Match against über mehre Tabellen

Guten Tag

Wie kann ich MATCH AGAINST über mehrere Tabellen tätigen?
Index über mehrere Tabellen anlegen oder Abfrage ändern?

Danke für jeden Hinweis!

SELECT per.person_id
FROM tbl_person AS per, tbl_adr AS adr, tbl_person_adr AS jpa
WHERE adr.adr_id = jpa.adr_id
AND per.person_id = jpa.person_id

AND MATCH (
per.person_vorname, per.person_name, adr.adr_ort
)
AGAINST (
'blah'
WITH QUERY EXPANSION
)

MySQL meldet:
#1210 - Incorrect arguments to MATCH

  1. Hallo,

    eventuell könnte ein UNION (ALL) über die entsprechenden Tabellen als Unterabfrage (Subselect/Subquery) helfen?

    Schau mal in der Dokumentation deiner MySql Version diesbezüglich nach.

    Ciao und gut Nacht,
    Frank

    1. Salut

      eventuell könnte ein UNION (ALL) über die entsprechenden Tabellen als Unterabfrage (Subselect/Subquery) helfen?

      Vielen Dank!
      Also MATCH AGAINST funktioniert wohl nicht über mehrere Tabellen, jedoch kann man mehrere SELECT Anweisungen mit UNION zu einer zusammenfassen:

      SELECT per.person_id
      FROM tbl_person AS per, tbl_adr AS adr, tbl_person_adr AS jpa
      WHERE adr.adr_id=jpa.adr_id AND per.person_id=jpa.person_id AND
      MATCH (per.person_vorname, per.person_name)
      AGAINST ('blah' WITH QUERY EXPANSION)
      UNION
      SELECT per.person_id
      FROM tbl_person AS per, tbl_adr AS adr, tbl_person_adr AS jpa
      WHERE adr.adr_id=jpa.adr_id AND per.person_id=jpa.person_id AND
      MATCH (adr.adr_ort)
      AGAINST ('blah' WITH QUERY EXPANSION)

      Geniesst den Tag!

      1. Neue Erkenntnis:

        Es scheint nur die Suche im Modus:

        'WITH QUERY EXPANSION'

        zu betreffen.
        Die Suche im Modus:

        'IN BOOLEAN MODE'

        funktioniert über mehrere Tabellen.

        Juhee!