flashbanane
Grünschnabel
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 aber alle Personen die entweder das Hobby mit der hob_id 1 oder 2 haben.
Ich will aber eine Übereinstimmung mit beiden Hobbys haben. Ich habe dann diese Abfrage getestet, was aber ein leeres Resultat ergibt.
Wie soll ich vorgehen, um die Personen zu ermitteln welche 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:
--
-- Tabellenstruktur für Tabelle `hobbys`
--
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 ;
--
-- Daten für Tabelle `hobbys`
--
INSERT INTO `hobbys` (`hob_id`, `hob_name`) VALUES
(1, 'Fussball'),
(2, 'Disco'),
(3, 'Kartenspiel'),
(4, 'Kochen'),
(5, 'Einkaufen'),
(6, 'Tischtennis'),
(7, 'Chat'),
(8, 'Schwimmen');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `objekt`
--
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 ;
--
-- Daten für Tabelle `objekt`
--
INSERT INTO `objekt` (`obj_id`, `obj_name`) VALUES
(1, 'Anton'),
(2, 'Anne'),
(3, 'Berta'),
(4, 'Fritz'),
(5, 'Sabine'),
(6, 'Otto');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `obj_hob`
--
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;
--
-- Daten für Tabelle `obj_hob`
--
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);
Wenn ich nun wissen will welche Person welche Hobbys hat erstelle ich folgende Abfrage:
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'
)
Ich will aber eine Übereinstimmung mit beiden Hobbys haben. Ich habe dann 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