Suche in MySQL-DB über 3 Tabellen

Suche in MySQL-DB über 3 Tabellen

am 11.10.2004 21:00:56 von Mark Knochen

Hallo,

ich habe drei Tabellen:

Autoren, Autoren_Rezension, Rezension
(DB-Layout siehe unten)

Nun möchte ich eine Volltextsuche ermöglichen.
Ich dachte mir das so:

Index anlegen über die relevanten Felder der Tabelle
"rezension".
Index anlegen über die relevanten Felder der Tabelle
"autoren".

Dann - bei einer Suche - erst die Tabelle "autoren"
durchsuchen und dann die möglichen Ergebnisse in
eine neue Suche über die Tabelle "rezension" einbinden.

Gibt es da noch eine Abfrage, die das alles in einem
ermöglicht?

Danke

Mark



-----------------------------------------------------------
CREATE TABLE `autoren` (
`ID` int(10) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`vorname` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`bio` text NOT NULL,
`datum` int(16) NOT NULL default '0',
KEY `ID` (`ID`)
);

CREATE TABLE `autoren_rezension` (
`textID` int(10) NOT NULL default '0',
`autorID` int(10) NOT NULL default '0'
);

CREATE TABLE `rezension` (
`ID` int(5) NOT NULL auto_increment,
`titel` varchar(255) NOT NULL default '',
`ort` varchar(255) NOT NULL default '',
`verlag` int(1) NOT NULL default '0',
`autor_rez` int(5) NOT NULL default '0',
`jahr` varchar(4) NOT NULL default '',
`isbn` varchar(255) NOT NULL default '',
`umfang_preis` varchar(255) NOT NULL default '',
`bild` varchar(255) NOT NULL default 'false',
`text` text NOT NULL,
`pdf` varchar(255) NOT NULL default 'false',
`anmerkungen` text NOT NULL,
`typ` int(5) NOT NULL default '0',
`land` int(5) NOT NULL default '0',
`sprache` int(5) NOT NULL default '0',
`klassifikation` int(5) NOT NULL default '0',
`epoche` int(5) NOT NULL default '0',
`schwerpunkt` int(5) NOT NULL default '0',
`user` int(5) NOT NULL default '0',
`datum` int(16) NOT NULL default '0',
`status` int(1) NOT NULL default '1',
`frei` text NOT NULL,
`meta_keys` text NOT NULL,
`meta_desc` text NOT NULL,
KEY `ID` (`ID`)
)

Re: Suche in MySQL-DB über 3 Tabellen

am 11.10.2004 22:09:24 von Niels Braczek

Mark Knochen schrieb:

> ich habe drei Tabellen:
> Autoren, Autoren_Rezension, Rezension
> (DB-Layout siehe unten)
> Nun möchte ich eine Volltextsuche ermöglichen.

Du suchst http://dev.mysql.com/doc/mysql/en/UNION.html.

BTW: Wo ist das PHProblem?

MfG
Niels

--
> Bitte stelle auch das Plenken (Leerzeichen vor Satzzeichen) ein.
sorry die doofe Frage : Wo stelle ich das ein, habe in den Settings von
Outlook Newsreader nix gefunden
[Klaus Gromann in dclpm]

Re: Suche in MySQL-DB über 3 Tabellen

am 11.10.2004 23:21:08 von Mark Knochen

> Du suchst http://dev.mysql.com/doc/mysql/en/UNION.html.
>

Mhh, bisher mache ich das so - ohne Indizierung:

SELECT annotation.titel,annotation.ID
FROM autoren, annotation, autoren_annotation
WHERE autoren.name
LIKE '%essay%' OR autoren.vorname
LIKE '%essay%' OR annotation.titel
LIKE '%essay%' OR annotation.text
LIKE '%essay%' AND autoren.ID = autoren_annotation.textID
GROUP BY annotation.ID

Funktioniert zwar, ist aber sehr langsam .....

Mark