Hallo Oliver,
ich versuche es erneut:
TBL: clan
- id - clan -
- 1 - clan1-
- 2 - clan2-
TBL: player
- id - player - clan - rasse -
- 1 - kev - 1 - pirat -
- 2 - plom - 1 - pirat -
- 3 - plom - 2 - pirat -
Jeder Spieler gehört genau einem Clan an,
jedem Clan können mehrere Spieler angehören.
Ein Planet setzt sich zusammen aus planet1 UND planet 2 und planet3.
111:222:333
12:1:7
Deswegen die PLANETENTABELLE mit
der ID für den Datensatz.
dem PLAYER für die Spielerzuordnung
und den 3 einzelnen Planetenteilen.
TBL: planeten
- id - planet1 - planet2 - planet3 - player -
- 1 - 123 - 345 - 678 - 1 -
- 2 - 555 - 111 - 888 - 1 -
- 3 - 999 - 777 - 120 - 2 -
Das bedeutet:
Jeder Planet gehört genau einem Spieler an,
Jedem Spieler können mehrere Planeten angehören.
Jeder Planet ist nur durch seine id gekennzeichnet.
Er besitzt noch nicht einmal einen Namen oder eine sonstige
für einen Menschen leicht merkbare Eigenschaft.
Zusätzlich gibt es drei Eigenschaften, die die unsinnigen
Namen planet1 bis planet3 tragen, die diverse Werte enthalten.
Nun möchtest Du alle Planeten haben, die einem bestimmten Clan zugeordnet sind. Diese Aufgabe ist nahezu trivial und erfordert nur einen einfachen INNER JOIN. Informationen über JOINs findest Du in SELFHTML aktuell:
Einführung in Joins
Fortgeschrittene Jointechniken
1. Schritt:
Ermittle alle Spieler die einem bestimmten Clan angehören:
SELECT
player.id AS spieler
FROM player
WHERE clan = <spezielle id des Clans>
2. Schritt:
Ermittle alle zugehörigen Planeten
SELECT -- Gib mir die
p.id AS planet, -- Einzelheiten der Planeten
p.planet1,
p.planet2,
p.planet3
FROM planeten p -- Aliasnamen ersparen Schreibarbeit :-)
INNER JOIN player s
ON p.player = s.id
WHERE s.clan = <spezielle id des Clans> -- die zu den Spielern eines bestimmten
-- Clans gehören
Das funktioniert natürlich nur, wenn meine vorherigen Annahmen in Ordnung
sind. Möchtest Du etwas anderes, dann musst Du das schon genauer beschreiben.
Stimmt meine Beschreibung der Zusammenhänge nicht, dann ist die Struktur
Deiner Datenbank fehlerhaft - oder Du hast die Zusammenhänge falsch beschrieben.
Freundliche Grüße
Vinzenz