smash Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 Hallo, ich habe eine MySQL DB. Ich bin an verschiedenen Stellen auf das gleiche Problem gestoßen. In einer Tabelle steht in zwei Spalten ein Fremdschlüssel zu einer anderen Tabelle. Z.B.: Tabelle nachricht: PK id, FK absender_id FK emfaenger_id Tabelle benutzer: PK id name Jetzt möchte ich die Namen des Absenders und des Empfängers einer Nachricht abfragen: "Select b.name as absender, b.name as empfaenger FROM nachricht n, benutzer b WHERE n.id = '$id' AND b.id = n.absender_id OR b.id = n.empfaenger;" Dieses Beispiel funktioniert natürlich nicht. - Wie mache ich das richtig? - Geht das überhaupt in einer Abfrage? Am liebsten wäre es mir, wenn das in einer Abfrage (oder mit Subqueries) gehen würde, so dass die Zuordnung der Namen von Absender und Empfänger in PHP korrekt sind. Vielen Dank im Voraus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 "Select b.name as absender, b.name as empfaenger FROM nachricht n, benutzer b WHERE n.id = '$id' AND b.id = n.absender_id OR b.id = n.empfaenger;" Probier mal so: (ungetestet) Select ba.name as absender, be.name as empfaenger from nachricht n inner join benutzer ba on ba.id = n.absender inner join benutzer be on be.id = n.empfaenger where id = $id hth Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jan Jansen Geschrieben 30. Mai 2008 Teilen Geschrieben 30. Mai 2008 deine Where-Bedingung geht auch SELECT * FROM nachricht MASTER , benutzer DETAIL1 , benutzer DETAIL2 WHERE MASTER.absender_id = DETAIL1.id AND MASTER.empfaenger_id = DETAIL2.id wichtig ist in diesem Fall nur, die Detailtabelle 2 Mal aufzunehmen (je einmal für jede FK-Beziehung die du auflösen möchtest) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smash Geschrieben 30. Mai 2008 Autor Teilen Geschrieben 30. Mai 2008 Danke für die Antoworten. Hab die zweite Lösung verwendet, da ich diese Schreibweise gewohnt bin. Sie funktioniert tadellos. Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.