phpbar.de logo

Mailinglisten-Archive

Knobelaufgabe :)

Knobelaufgabe :)

Steffen"GaRaOne"Schulze mysql-de_(at)_lists.bttr.org
Wed, 9 Oct 2002 23:30:52 +0200


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