Variante 3 :D
3 Tabellen.
1. Class
CREATE TABLE `class` ( `classid` tinyint(11) unsigned NOT NULL auto_increment, `classname` varchar(64) NOT NULL, PRIMARY KEY (`classid`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;-- -- Daten für Tabelle `class`-- INSERT INTO `class` (`classid`, `classname`) VALUES (1, 'Death Knight');INSERT INTO `class` (`classid`, `classname`) VALUES (2, 'Druid');INSERT INTO `class` (`classid`, `classname`) VALUES (3, 'Hunter');INSERT INTO `class` (`classid`, `classname`) VALUES (4, 'Mage');INSERT INTO `class` (`classid`, `classname`) VALUES (5, 'Paladin');INSERT INTO `class` (`classid`, `classname`) VALUES (6, 'Priest');INSERT INTO `class` (`classid`, `classname`) VALUES (7, 'Rogue');INSERT INTO `class` (`classid`, `classname`) VALUES (8, 'Shaman');INSERT INTO `class` (`classid`, `classname`) VALUES (9, 'Warlock');INSERT INTO `class` (`classid`, `classname`) VALUES (10, 'Warrior');
2. Talent
CREATE TABLE `talent` ( `talentid` tinyint(3) unsigned NOT NULL auto_increment, `classid` tinyint(3) unsigned NOT NULL, `talentname` varchar(64) NOT NULL, PRIMARY KEY (`talentid`), FOREIGN KEY (classid) REFERENCES class(classid)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;-- -- Daten für Tabelle `talent`-- INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (1, 2, 'Feral');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (2, 2, 'Restoration');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (3, 2, 'Moonkin');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (4, 5, 'Holy');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (5, 5, 'Protection');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (6, 5, 'Retribution');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (7, 6, 'Holy');INSERT INTO `talent` (`talentid`, `classid`, `talentname`) VALUES (8, 6, 'Shadow');
3. Recruit
CREATE TABLE `recruit` ( `recruitid` int(10) unsigned NOT NULL auto_increment, `talentid` tinyint(4) unsigned NOT NULL, `recruitcount` tinyint(3) unsigned NOT NULL, `comment` varchar(255) NOT NULL, PRIMARY KEY (`recruitid`), FOREIGN KEY (talentid) REFERENCES talent(talentid)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;-- -- Daten für Tabelle `recruit`-- INSERT INTO `recruit` (`recruitid`, `talentid`, `recruitcount`, `comment`) VALUES (1, 1, 1, '');INSERT INTO `recruit` (`recruitid`, `talentid`, `recruitcount`, `comment`) VALUES (2, 5, 2, '');
Mit diesem SQL lassen sich dann für alle Talente die eingetragen sind die entsprechende Klasse auslesen und die Anzahl an zu Recrutierenden Membern.
SELECT talentname, classname, recruitcount FROM talent tINNER JOIN class c ON t.classid = c.classidLEFT OUTER JOIN recruit r ON t.talentid = r.talentidORDER BY c.classname, t.talentname
Habe da nur paar Beispieldaten reingefüllt.
Das kannst du dir ja dann in PHP in ein array füllen dass du am ende quasi hast:
$class['priest']['total'] = 3;$class['priest']['holy'] = 1;$class['priest']['shadow'] = 2;$class['druid']['total'] = 1;$class['druid']['feral'] = 0;$class['druid']['moonkin'] = 1;$class['rogue']['total'] = 0;
Dadurch kannst du anhand vom total bestimmen ob die Talente angezeigt werden oder einfach nur die Klasse ohne Talent Details ;)