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;
ca. 2.000.000 Datensätze, PHPMyAdmin, SQL-DB, V-Server bei Strato
mfg
R. Geiseler
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;
ca. 2.000.000 Datensätze, PHPMyAdmin, SQL-DB, V-Server bei Strato
mfg
R. Geiseler
Comment