Supportnet / Forum / Datenbanken
mySQL Verknüpfung von 2 Tabellen
Frage
Hi, zuerstmal:
Ich bin noch ganz am Anfang mit Beziehungen und Verknüpfungen, also erklärt mir das bitte ganz einfach ;)
Folgendes Problem:
Ich habe 2 Tabellen:
teilnehmer
--------------------
| id | name | clan |
--------------------
| 1 | test | 1 |
| 2 | lala | 2 |
| 3 | lulu | 1 |
--------------------
clans
-----------------
| id | clanname |
-----------------
| 1 | clan1 |
| 2 | clan2 |
-----------------
Ich will nun eine Abfrage mit PHP machen.
Sowas soll angezeigt werden:
clan 'clan1'
mitglieder: test, lulu
clan 'clan2'
mitglieder: lala
SELECT teilnehmer.name FROM teilnehmer WO clan = aktueller clan.
Aktueller Clan ist ne Variable, in der der Name des Clans drinsteht.
Er soll also den Primärschlüssel der Tabelle clans mit dem Fremdschlüssel 'clan' in der Tabelle teilnehmer verknüpfen.
Wie geht das ?
Antwort 1 von Rangoo
Ähm, ich weiß ja nicht, so recht, wo jetzt das Problem ist... Hast doch eigentlich gesagt, was du brauchst...
aktuellerclan=1
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer,clans WHERE clan = aktuellerclan
aktuellerclan=2
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer,clans WHERE clan = aktuellerclan
Geht natürlich auch mit Schleifen, um aktuellerclan durchzuzählen. Würde Arbeit sparen.
aktuellerclan=1
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer,clans WHERE clan = aktuellerclan
aktuellerclan=2
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer,clans WHERE clan = aktuellerclan
Geht natürlich auch mit Schleifen, um aktuellerclan durchzuzählen. Würde Arbeit sparen.
Antwort 2 von Rangoo
Ups, die "clans" sind zuviel...
aktuellerclan=1
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer WHERE clan = aktuellerclan
aktuellerclan=2
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer WHERE clan = aktuellerclan
aktuellerclan=1
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer WHERE clan = aktuellerclan
aktuellerclan=2
clan: SELECT clanname FROM clans WHERE id=aktuellerclan.
mitglieder: SELECT name FROM teilnehmer WHERE clan = aktuellerclan
Antwort 3 von hYpe
Ne, das haste jetzt falsch verstanden.
Das soll rauskommen:
clan 'clan1'
mitglieder: test, lulu
clan 'clan2'
mitglieder: lala
Ich will die Mitglieder auslesen, die in einem bestimmten clan sind.
Und dabei halt die beiden Tabellen über die id's verknüpfen.
Das soll rauskommen:
clan 'clan1'
mitglieder: test, lulu
clan 'clan2'
mitglieder: lala
Ich will die Mitglieder auslesen, die in einem bestimmten clan sind.
Und dabei halt die beiden Tabellen über die id's verknüpfen.
Antwort 4 von Rangoo
In dem Fall kannst du aber die Banken nicht über die ID's verknüpfen, weil die sich in meinen Augen auf zwei völlig verschiedene Dinge beziehen:
Tabelle 1: ID eines Spielers mit Name und Clan-ID
Tabelle 2: Name eines Clans
An sich verlangst du eher eine Verbindung der ID von der Clannummer aus Tabelle 1 mit der ID aus Tabelle 2.
Beide Tabellen so wie du willst miteinander verknüpfen könntest du nur, wenn in Tabelle 1 lediglich ID und Name steht und in Tabelle 2 dann zu der ID der entsprechende Clan.
Oder sehe ich das falsch? Wo sind hier die logisch denkenden Datenbank-Freaks von Access und Co.???
Tabelle 1: ID eines Spielers mit Name und Clan-ID
Tabelle 2: Name eines Clans
An sich verlangst du eher eine Verbindung der ID von der Clannummer aus Tabelle 1 mit der ID aus Tabelle 2.
Beide Tabellen so wie du willst miteinander verknüpfen könntest du nur, wenn in Tabelle 1 lediglich ID und Name steht und in Tabelle 2 dann zu der ID der entsprechende Clan.
Oder sehe ich das falsch? Wo sind hier die logisch denkenden Datenbank-Freaks von Access und Co.???
Antwort 5 von hYpe
"An sich verlangst du eher eine Verbindung der ID von der Clannummer aus Tabelle 1 mit der ID aus Tabelle 2. "
Ja genau das mein ich doch ...
Habs jetzt schon selber rausgefunden, in dem ich das Ding in Access gebastelt hab und dann den SQL Code genommen habe.
SELECT teilnehmer.username FROM clans INNER JOIN teilnehmer ON clans.clan_id = teilnehmer.clan3 WHERE clans.clanname = '$aktuellerclan'
Ja genau das mein ich doch ...
Habs jetzt schon selber rausgefunden, in dem ich das Ding in Access gebastelt hab und dann den SQL Code genommen habe.
SELECT teilnehmer.username FROM clans INNER JOIN teilnehmer ON clans.clan_id = teilnehmer.clan3 WHERE clans.clanname = '$aktuellerclan'

