PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verweisen auf eine Zeile aus einer anderen Tabelle (PostgreSQL)

Wenn ich Sie richtig verstehe, sollten Sie etwas über die Grundkonzepte relationaler Datenbanken lesen (d. h. http://www3.ntu.edu.sg/home/ehchua/programming/sql/relationales_datenbankdesign.html ). Ihre Tabellen sollten so aussehen:

CREATE TABLE post(
    post_id INT,
    user_id INT
);

CREATE TABLE user (
    user_id INT
);

Dies ist im Grunde eine Eins-zu-Viele-Beziehung zwischen Benutzer und Beitrag, was bedeutet, dass ein Benutzer viele Beiträge haben kann. Wenn Sie alle Posts eines Benutzers haben möchten (in diesem Fall des Benutzers mit der ID 1), können Sie sie folgendermaßen abrufen:

SELECT * FROM user u
LEFT JOIN post p ON u.user_id = p.user_id
WHERE user_id = 1;

Wie ich in Ihrer Frage sehen kann, möchten Sie das Ergebnis möglicherweise einem objektorientierten Modell zuordnen. Dies hängt stark von der Technologie/Sprache ab, die Sie verwenden. Die meisten Technologien bieten Bibliotheken an, um sich mit Datenbanksystemen wie PostgreSQL zu verbinden, offene und geschlossene Verbindungen starten Abfragen und erhalten die Ergebnisse zurück. In diesem Fall müssen Sie die Ergebnisse selbst zuordnen. Aber es gibt auch fortgeschrittene Mapper wie Hibernate, die versuchen, diese Arbeit für Sie zu erledigen. Aber um sie zu nutzen, sollten Sie sich gut mit den Technologien „unter der Haube“ auskennen.