parent - child
I mit system skal grupper kunne have tilmeldt nul, en eller flere andre grupper. Desuden skal en gruppe kunne være tilmeldt til nul, en eller flere andre grupper.Jeg har følgende to tabeller:
grupper:
grupper_id int(11)
grupper_navn tinytext
grupper_dato timestamp, CURRENT_TIMESTAMP
...som beskriver grupper med et unikt id samt gruppens navn.
grupper_parents:
indeks int(11)
grupper_id int(11)
grupper_parent_id int(11)
...som beskriver tilhørs forholdene.. hvor grupper_id svarer til tabellen "grupper".grupper_id og "grupper_parent_id" svarer til det unikke id som gruppen skal tilmeldes.
ekspempel:
grupper_id = 1, grupper_navn = klasse
grupper_id = 2, grupper_navn = sfo
grupper_id = 3, grupper_navn = kor
grupper_id = 4, grupper_navn = martin
grupper_id = 5, grupper_navn = lukas
grupper_parents:
grupper_id = 1, grupper_parent_id = 0
grupper_id = 2, grupper_parent_id = 1
grupper_id = 3, grupper_parent_id = 1
grupper_id = 4, grupper_parent_id = 2
grupper_id = 4, grupper_parent_id = 3
grupper_id = 5, grupper_parent_id = 1
Ovenstående beskriver at "klasse" indeholder "sfo" og "kor". "martin" er i både "sfo" og "kor", mens "lukas" kun er tilmeldt "klasse".
Nu vil jeg gerne med så få SELECT statements (gerne med blot én) kunne besvare følgende:
1) hvilke grupper "martin" ultimativt tilmeldt?... jeg vil med andre ord gerne have en statement som fortæller at "martin" er tilmeldt: "sfo", "kor" og "klasse", fordi "sfo" og/eller "kor" er tilmeldt "klasse" som dermed også skal listes.
2) hvilke grupper er tilmeldt gruppen "klasse"?... jeg vil dermed gerne have en statement som fortæller at "klasse" indeholder: "sfo", "kor", "lukas" og "martin", fordi "martin" er tilmeldt "sfo" og/eller "kor".
Hvordan pokker gør jeg ovenstående med MySQL?