phpbar.de logo

Mailinglisten-Archive

[php] OT: SQL klausel nochmal "deutlicher"

[php] OT: SQL klausel nochmal "deutlicher"

Michael Borchers list at tridemail.de
Mon Sep 11 16:07:56 CEST 2006


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