Hallo, an alle Profis der Joinabfragen.
ich benötige Hilfestellung bei dem Aufbau einer Suchabfrage, momentan benutze ich eine rigth join Abfrage, diese sucht mir alle Firmendaten aus meiner Haupttabelle, welche das Suchkriterium erfüllen. Derzeit ist das Suchkriterium allerdings eingeschränkt, nähmlich auf genau den vorhanden Begriff in einer Kategorie-Tabelle (Fulltext). Die Kategorien haben, genau wie die Firmentabelle eine ID mit Int-Typ sowie belegtem Index (Primär). Eine dritte Tabelle bildet dann die Verbindung (Foreign-Key). Nun möchte ich die Suche erweitern, undzwar soll die Möglichkeit bestehen auch Firmennamen im selben Suchfenster einzugeben, sowie in einem zweiten Suchfenster Orte oder PLZ gleich mitzufiltern.
Explain SELECT *
FROM company AS comp
RIGHT JOIN company_industry AS comp_ind ON comp.id = comp_ind.company_id
RIGHT JOIN industry AS ind ON comp_ind.industry_id = ind.id
WHERE
MATCH (ind.d_kat) AGAINST (’$Abbeizarbeiten’)
Kann jemand helfen die Abfrage auszubauen oder anders zu gestalten?
CREATE TABLE company
(
ID
int(10) NOT NULL,
COSTUMER_ID
varchar(10) NOT NULL,
PASSWORD
text NOT NULL,
SALUTATION
text NOT NULL,
TITLE
text NOT NULL,
FIRSTNAME
varchar(80) NOT NULL,
COMPANYNAME
varchar(255) NOT NULL,
STREET
varchar(255) NOT NULL,
ZIPCODE
varchar(10) NOT NULL,
LOCATION
varchar(50) NOT NULL,
PHONEPREFIX
varchar(20) NOT NULL,
PHONENUMBER
varchar(20) NOT NULL,
FAXPREFIX
varchar(20) NOT NULL,
FAXNUMBER
varchar(20) NOT NULL,
MOBILEPREFIX
varchar(20) NOT NULL,
MOBILNUMBER
varchar(20) NOT NULL,
EMAIL
text NOT NULL,
HOMEPAGE
text NOT NULL,
STATE
text NOT NULL,
COUNTRY
text NOT NULL,
PRIMARY KEY (ID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE company_industry
(
COMPANY_ID
int(10) NOT NULL default ‘0’,
INDUSTRY_ID
int(10) NOT NULL default ‘0’,
PRIMARY KEY (COMPANY_ID
,INDUSTRY_ID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE industry
(
id
int(10) NOT NULL default ‘0’,
d_kat
varchar(50) NOT NULL default ‘’,
PRIMARY KEY (id
),
FULLTEXT KEY FULLTEXT_INDEX
(d_kat
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mfg
R. Geiseler