Mailinglisten-Archive |
viell. gibt es ja doch eine lösung ohne dritte tabelle.
meine tabellen stehen unten.
also:
unsere software erlaubt dem nutzer für die tabelle "kunden" eigene
kategorien (contacts_categories) anzulegen.
daraus werden dann <select> klappmenüs mit <options>
(contacts_categories_options) erstellt.
diese werden dann in einer tabelle (contacts_categories_values) gespeichert.
nun soll es auch eine suchfunktion geben.
zb durchsucht jmd seine kategorien (nicht im OR sondern im AND verfahren)
nach bspweise:
Kategorie BRANCHE (ID 2) mit dem Wert DIENSTLEISTUNGEN (ID 16)
UND !!
Kategorie MITARBEITERANZAHL (ID 16) mit dem Wert 6 BIS 10 MITARBEITER (ID
40)
wie kann ich also nach den kontakten suchen / joinen, welche die angegebene
kategorien hinterlegt haben?!
ps:
die daten bekomme ich aus einem $_GET Array mit jeweils:
[0] = Array(
contacts_categories = 2,
contacts_categories_options_id = 16
);
[1] = Array(
contacts_categories = 16,
contacts_categories_options_id = 40
);
Achtung die Tabellen (sorry, sehr lange Namen - war leider vorgegeben...):
CREATE TABLE `contacts_categories` (
`contacts_categories_id` int(11) NOT NULL auto_increment,
`contacts_categories_name` varchar(255) NOT NULL default '',
`groups_id` int(11) NOT NULL default '0',
PRIMARY KEY (`contacts_categories_id`)
)
--
-- Daten für Tabelle `contacts_categories`
--
INSERT INTO `contacts_categories` (`contacts_categories_id`,
`contacts_categories_name`, `groups_id`) VALUES
(2, 'Branchen', 1),
(16, 'Mitarbeiterzahl', 1);
CREATE TABLE `contacts_categories_options` (
`contacts_categories_options_id` int(11) NOT NULL auto_increment,
`contacts_categories_id` int(11) NOT NULL default '0',
`contacts_categories_options_value` varchar(255) NOT NULL default '',
`contacts_categories_options_name` varchar(255) NOT NULL default '',
PRIMARY KEY (`contacts_categories_options_id`),
KEY `contacts_categories_id` (`contacts_categories_id`)
) TYPE=MyISAM AUTO_INCREMENT=46 ;
--
-- Daten für Tabelle `contacts_categories_options`
--
INSERT INTO `contacts_categories_options` (`contacts_categories_options_id`,
`contacts_categories_id`, `contacts_categories_options_value`,
`contacts_categories_options_name`) VALUES
(16, 2, 'dienstleistungen', 'Dienstleistungen'),
(15, 2, 'industrie', 'Industrie'),
(40, 16, '6_bis_10_mitarbeiter', '6 bis 10 Mitarbeiter'),
(41, 16, '11_bis_20_mitarbeiter', '11 bis 20 Mitarbeiter')
...
CREATE TABLE `contacts_categories_values` (
`contacts_categories_id` int(11) NOT NULL default '0',
`contacts_id` int(11) NOT NULL default '0',
`contacts_categories_options_id` int(11) NOT NULL default '0',
KEY `contacts_id` (`contacts_id`),
KEY `contacts_categories_options_id` (`contacts_categories_options_id`)
)
--
-- Daten für Tabelle `contacts_categories_values`
--
INSERT INTO `contacts_categories_values` (`contacts_categories_id`,
`contacts_id`, `contacts_categories_options_id`) VALUES
(2, 1, 16),
(16, 1, 40);
php::bar PHP Wiki - Listenarchive