Georg: MySQL -> Wie werte ich die Beziehungen richtig aus?

Beitrag lesen

Om nah hoo pez nyeetz, Georg!

Soweit, sogut. Leider stehe ich aber gerade sowas von nebenmir das ich das einfach nicht hinbekomme - also hoffe ich hier auf ein wenig Unterstützung (das ich das mit JOINs lösen sollte weiss ich, nur irgendwie komme ich nicht drauf...).
Ich bitte zu beachten, das der MA ALLE(!) Qualifikationen erfüllen muss (also ein IN... scheidet aus).

Dann solltest du Beispieldaten zur Vefügung stellen. Das gibts auch online.

Matthias

Huppsss,

doch wohl zu kompliziert ausgedrückt....
Also wie gesagt, ich habe 5 Tabellen:

qualifikation
--------------------
qualifikation_id
bezeichner

mitarbeiter
--------------------
mitarbeiter_id
bezeichner

auftrag
--------------------
auftrag_id
bezeichner

rl_mitarbeiterqualifikation
--------------------
mitarbeiter_id
qualifikation_id

rl_auftragqualifikation
--------------------
auftrag_id
Qualifikation_id

Bei obigen Aufbau speichere ich in der Tabelle "qualifikation" mögliche Qualifikationsmerkmale, in der Tabelle "mitarbeiter" Mitarbeiterdaten jw. eines einzelnen Mitarbeiters und in der Tabelle "auftrag" jw. Daten eines einzelnen Auftrages.

Jeder Auftrag hat hierbei eine unterschiedliche Anzahl von möglichen Qualifikationen, eine entsprechende Zuweisung löse ich über die Tabelle "rl_auftragqualifikation". Da ja auch jeder Mitarbeiter Qualifikationen hat, verwende ich hierfür ebenfalls eine Tabelle, die "rl_mitarbeiterqualifikation".

Meine konkrete Frage hierzu ist, wie ich anhand einer gegebenen Auftrags-ID alle passenden Mitarbeiter herausfinden kann (Kriterium ist hierbei gleiche oder mehr Qualifikation seitens des Mitarbeiters in Bezug auf den Auftrag).

Wer das ganze mal in der DB probieren will, hier eine (stark eingekürzte) SQL:

  
--  
-- Tabellenstruktur für Tabelle `db_auftrag`  
--  
  
CREATE TABLE IF NOT EXISTS `db_auftrag` (  
  `id` int(50) NOT NULL AUTO_INCREMENT,  
  `bezeichner` varchar(50) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;  
  
--  
-- Daten für Tabelle `db_auftrag`  
--  
  
INSERT INTO `db_auftrag` (`id`, `bezeichner`) VALUES  
(1, 'Testauftrag 1');  
  
-- --------------------------------------------------------  
  
--  
-- Tabellenstruktur für Tabelle `db_mitarbeiter`  
--  
  
CREATE TABLE IF NOT EXISTS `db_mitarbeiter` (  
  `id` int(200) NOT NULL AUTO_INCREMENT,  
  `bezeichner` varchar(50) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;  
  
--  
-- Daten für Tabelle `db_mitarbeiter`  
--  
  
INSERT INTO `db_mitarbeiter` (`id`, `bezeichner`) VALUES  
(1,'Paul Panzer', 1),  
(2,'Michael Müller', 1),  
(3,'Kai Hummel', 1);  
  
-- --------------------------------------------------------  
  
--  
-- Tabellenstruktur für Tabelle `db_qualifikation`  
--  
  
CREATE TABLE IF NOT EXISTS `db_qualifikation` (  
  `id` int(20) NOT NULL AUTO_INCREMENT,  
  `bezeichnung` varchar(150) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;  
  
--  
-- Daten für Tabelle `db_qualifikation`  
--  
  
INSERT INTO `db_qualifikation` (`id`, `bezeichnung`) VALUES  
(1, 'FSK III'),  
(2, 'Schweisserschein'),  
(3, 'FSK II'),  
(4, 'Akkord');  
  
-- --------------------------------------------------------  
  
--  
-- Tabellenstruktur für Tabelle `rl_atqu`  
--  
  
CREATE TABLE IF NOT EXISTS `rl_atqu` (  
  `id` int(250) NOT NULL AUTO_INCREMENT,  
  `atid` int(20) NOT NULL,  
  `quid` int(20) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;  
  
--  
-- Daten für Tabelle `rl_atqu`  
--  
  
INSERT INTO `rl_atqu` (`id`, `atid`, `quid`) VALUES  
(1, 1, 4),  
(2, 1, 3);  
  
-- --------------------------------------------------------  
  
--  
-- Tabellenstruktur für Tabelle `rl_maqu`  
--  
  
CREATE TABLE IF NOT EXISTS `rl_maqu` (  
  `id` int(250) NOT NULL AUTO_INCREMENT,  
  `maid` int(20) NOT NULL,  
  `quid` int(20) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;  
  
--  
-- Daten für Tabelle `rl_maqu`  
--  
  
INSERT INTO `rl_maqu` (`id`, `maid`, `quid`) VALUES  
(1, 1, 3),  
(2, 2, 4),  
(5, 2, 2),  
(6, 3, 2);  

Ich hoffe das war diesmal verständlicher.

Gruss
Georg