JOIN Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
ausgeben
benutzer
beziehung
code
einzelnen nutzer
entsprechenden tabelle
ergebnis
erinnerung
form
freund
idee
information
jemand
realisieren
richtige ergebnis
stellen
tabelle
typ
-
Ich habe zwei Tabellen in einer MySQL-Datenbank.
Die eine (tobiphp_user_connections) enthält Beziehungen zwischen Benutzern in der Form:
user_id+++++connected_id+++++connection --------------------------------------- 100000 100001 friend
Die andere Tabelle (tobiphp_users) enthält die Informationen der einzelnen Nutzer:
user_id+++++username ............ --------------------------------- 100000 Tobi 100001 Nutzer2
Nun möchte ich die Freunde von einem Benutzer ausgeben. Dafür schaue ich in
nach Verbindungen des Typs "friend" und gebe dietobiphp_user_connections
aus.connected_id
Wenn ich jetzt aber die Namen der Freunde ausgeben will, müsste ich einzeln neue Abfragen stellen, deshalb versuche ich mich an JOINs, bekomme aber kein Ergebnis.
Meine Versuch:
<?php $result = $GLOBALS['DB']->query(" SELECT tobiphp_users.* FROM tobiphp_user_connections LEFT JOIN tobiphp_users ON tobiphp_user_connections.user_id = tobiphp_users.user_id "); while ($row = $result->fetch_assoc()) { echo $row['connected_id'] ."-". $row['user_id']; } ?>
Dadurch bekomme ich aber immer als user_id die tobiphp_user_connections.user_id.
Hat jemand eine Idee? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mir fällt gerade auf, wie lange es her ist, dass ich das gemacht habe und die Erinnerung daran ist ziemlich schwach, also sei bitte nicht sauer, falls es nicht funktioniert.
Verwende das in deiner SQL-Abfrage:
SELECT tobiphp_users.user_id as id, tobiphp_users.username as name
Dann fragst du in PHP die Array-Elemente id und name ab. Ich weiß nicht mehr, ob man die Bezeichnungen auch überschreiben kann, aber das kannst du dann ja rausfinden, wenn du willst. -
Das funktioniert zwar, liefert aber auch nicht das richtige Ergebnis, die ID ist wieder die Gleiche.
EDIT:
Ich habe jetzt bemerkt, dass ich eigentlich gar nicht auf tobiphp_users.user_id angewiesen bin.
Ich kann ja auch einfach connected_id verwenden.
Also funktioniert jetzt alles; ich würde mich trotzdem freuen, wenn jemand erklären könnte, ob mein gedachtes Vorhaben überhaupt zu realisieren ist.
Beitrag zuletzt geändert: 26.10.2012 20:46:31 von tobiworlds -
deine UserId dürfte nicht die gleiche sein. In der ersten reihe 10000 und in der zweiten 10001.
aber natürlich kannst du dass. Eine möglichkeit wäre z.B. ein group by zu nehmen und dann mittels group_concat die userid hintereinander anzugeben
eine andere möglichkeit ist, dass du drafed-maps Idee verfolgst nur die werte aus der entsprechenden Tabelle nimmst -
Mir wird aber die gleiche ID ausgegeben, auch wenn es mich selbst verwundert hat, ich bin mir sicher.
Aber egal, ich werde mir Deine Lösung nochmal anschauen, auch wenn es wie gesagt jetzt ja leicht getrickst auch ohne diese Funktion möglich ist.
Danke, kann geschlossen werden -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage