sql >> Databáze >  >> RDS >> PostgreSQL

Odkazování na řádek z jiné tabulky (PostgreSQL)

Pokud vám dobře rozumím, měli byste si přečíst o základních konceptech relačních databází (tj. http://www3.ntu.edu.sg/home/ehchua/programming/sql/relational_database_design.html ). Vaše tabulky by měly vypadat takto:

CREATE TABLE post(
    post_id INT,
    user_id INT
);

CREATE TABLE user (
    user_id INT
);

Toto je v podstatě vztah jeden k mnoha mezi uživatelem a příspěvkem, což znamená, že jeden uživatel může mít mnoho příspěvků. Pokud chcete všechny příspěvky uživatele (v tomto případě uživatele s ID 1), můžete je získat takto:

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

Jak vidím ve vaší otázce, možná budete chtít namapovat výsledek na objektově orientovaný model. To hodně závisí na technologii/jazyku, který používáte. Většina technologií nabízí knihovnám pro připojení k databázovým systémům, jako je PostgreSQL, otevírání a uzavírání připojení spouští dotazy a získává zpět výsledky. V tomto případě musíte výsledky zmapovat sami. Existují však také pokročilí mappeři, jako je hibernace, kteří se tuto práci snaží udělat za vás. Ale abyste je mohli používat, měli byste mít dobré znalosti technologií „pod kapotou“.




  1. UPDATE/INSERT na základě toho, zda řádek existuje

  2. NodeJS se nemohl připojit k nejnovější verzi MYSQL uvnitř kontejneru Docker

  3. Rekurzivně vypisujte obsahy pohledu Oracle DBA_DEPENDENCIES

  4. Má MySql podporu xml jako SQL Server?