Hallo miteinander,
gerade arbeite ich an einen Datenbankentwurf der wie folgt aussieht.
Die Tabellen:
In Tabelle objekt stehen die Personendaten
In Tabelle hobbys stehen die Namen einiger Hobbys.
In Tabelle obj_hob wird gespeichert welche Person welche Hobbys hat.
Wenn ich nun wissen will welche Person welche Hobbys hat erstelle ich folgende Abfrage:
So weit so gut
Nun will ich eine Abfrage erstellen die alle Personen listet die eine Übereinstimmung der Abgefragten Hobbys hat.
Erst habe ich folgende Abfrage erstellt
Das Ergebnis zeigt mir alle Personen die entweder das Hobby mit der hob_id 1 oder 2 haben.
Nun will ich eine Übereinstimmung mit beiden Hobbys haben. Ich habe diese Abfrage getestet, was aber ein leeres Resultat ergibt.
Wie kann ich vorgehen, um die Personen zu ermitteln die bei den Hobbys eine exakte Übereinstimmung haben?
lg
gerade arbeite ich an einen Datenbankentwurf der wie folgt aussieht.
Die Tabellen:
In Tabelle objekt stehen die Personendaten
In Tabelle hobbys stehen die Namen einiger Hobbys.
In Tabelle obj_hob wird gespeichert welche Person welche Hobbys hat.
Code:
CREATE TABLE `hobbys` ( `hob_id` mediumint(8) unsigned NOT NULL auto_increment, `hob_name` varchar(25) collate latin1_general_ci NOT NULL, PRIMARY KEY (`hob_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ; INSERT INTO `hobbys` (`hob_id`, `hob_name`) VALUES (1, 'Fussball'), (2, 'Disco'), (3, 'Kartenspiel'), (4, 'Kochen'), (5, 'Einkaufen'), (6, 'Tischtennis'), (7, 'Chat'), (8, 'Schwimmen'); CREATE TABLE `objekt` ( `obj_id` mediumint(8) unsigned NOT NULL auto_increment, `obj_name` varchar(25) collate latin1_general_ci NOT NULL, PRIMARY KEY (`obj_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ; INSERT INTO `objekt` (`obj_id`, `obj_name`) VALUES (1, 'Anton'), (2, 'Anne'), (3, 'Berta'), (4, 'Fritz'), (5, 'Sabine'), (6, 'Otto'); CREATE TABLE `obj_hob` ( `obj_id` mediumint(8) unsigned NOT NULL, `hob_id` mediumint(8) unsigned NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; INSERT INTO `obj_hob` (`obj_id`, `hob_id`) VALUES (1, 1), (1, 3), (1, 5), (1, 7), (2, 1), (2, 2), (2, 3), (2, 4), (3, 2), (3, 4), (3, 6), (3, 8), (4, 5), (4, 6), (4, 7), (4, 8), (5, 1), (5, 3), (5, 5), (5, 7), (6, 1), (6, 2), (6, 3), (6, 4);
Code:
SELECT hob_name FROM obj_hob, hobbys WHERE obj_hob.hob_id = hobbys.hob_id AND obj_id = '1'
Nun will ich eine Abfrage erstellen die alle Personen listet die eine Übereinstimmung der Abgefragten Hobbys hat.
Erst habe ich folgende Abfrage erstellt
Code:
SELECT obj_name, hob_name FROM objekt, hobbys, obj_hob WHERE objekt.obj_id = obj_hob.obj_id AND obj_hob.hob_id = hobbys.hob_id AND ( obj_hob.hob_id = '1' OR obj_hob.hob_id = '2' )
Nun will ich eine Übereinstimmung mit beiden Hobbys haben. Ich habe diese Abfrage getestet, was aber ein leeres Resultat ergibt.
Code:
SELECT obj_name, hob_name FROM objekt, hobbys, obj_hob WHERE objekt.obj_id = obj_hob.obj_id AND obj_hob.hob_id = hobbys.hob_id AND ( obj_hob.hob_id = '1' AND obj_hob.hob_id = '2' )
lg
Kommentar