Mailinglisten-Archive |
Ich sitz hier seit gestern vor nem Problem desen Lösung einfach nicht näher kommen will... DIE AUFGABE es gibt 2 tabellen. die erste Tabellenname: tech_status Tabellenspalten: userid, techid die zweite Tabellenname: tech_edge Tabellenspalten: techid1, techid2 wer das spiel civilization kennt, wird sich vielleicht an den technologiebaum erinnern... einen ähnlichen versuche ich hier zu impementiern. in der ersten tabelle (tech_status) wird gespeichert: welcher user hat welche technologie bereits erforscht. hat der user mit der id 1 bereits die technologien mit den id 3 und 5 erforscht so steht in der tabelle 1 3 1 5 in der zweiten tabelle (tech_edge) ist der forschungsbaum gespeichert. es handelt sich um einen gerichteten graphen. in der tabelle sind alle kanten gespeichert. 3 4 heisst damit, technologie 3 wird benötigt um 4 zu erforschen. gibt es mehrere kanten auf einen knoten/technologie, so heisst das alle vorausgesetzen technologien werden zur erforschung benötigt. z.B 3 4 5 4 nur wenn der der user die technologien 3 und 5 bereits erforscht hat, kann er 4 erforschen. genaus, wie es mehrere kanten geben kann, die auf einen knoten zeigen, so kann es auch mehr als eine geben die von einem knoten wegzeigen. z.B. 4 7 4 6 die technologie 4 ist voraussetzung für die technologien 7 und 6. ++++++++++++++++++++++++++++++++AUFGABE++++++++++++++++++++++++++++++ in einer EINZIGEN mySQL-Abfrage alle Technologien/id zu bekommen, die möglich, um sie zu erforschen BEISPIEL TABELLEN tech_status userid techid 18 1 18 11 18 12 18 14 18 15 tech_edge techid1 techid2 1 11 11 13 12 13 14 17 15 17 16 17 wenn man sich das beispiel betracht, müsste sich folgendes ergeben id 13 11 nicht, weil es bereits erforscht wurde 17 nicht, weil noch die technologie 16 fehlt nur 13 ist derzeit erforschbar p.s.: ich hoffe der umfang der problemstellung zeigt wie wichtig das für mich ist. da ich mich mit den ganzen joins noch nicht 100% auskenne hab ich mich immer wieder verhaspelt... nen riesendank schonmal an alle die mitgrübeln... ...vielleicht ist die lösung ja doch viel einfacher als ich mir vorstelle --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive