查询一对多关系的两个表
Query two tables with one to many relationship
我正在使用两个具有一对多关系的 Postgres table。主要 table 称为用户,另一个 table 称为文件。
用户 table 有以下列:
id SERIAL PRIMARY KEY,
email VARCHAR(128) NOT NULL,
username VARCHAR(128) UNIQUE NOT NULL,
password_hash VARCHAR(128) NOT NULL
文件 table 有以下列:
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
title VARCHAR(128) NOT NULL,
url VARCHAR(128) NOT NULL
当我登录到我的应用程序时,我通过执行
查询要显示的所有文件
cur.execute('SELECT * from files')
当我想要特定的用户文件时,我 运行
cur.execute('SELECT * from files where user_id = %i' % user_id)
对于获取所有文件的查询,我想对其进行调整,以便我也获得与每个文件关联的用户名。我应该如何调整我的执行语句来实现这一点?
尝试以下操作。我知道这种语法适用于其他 dbms':
cur.execute('SELECT f.*, u.username from files as f, users as u where u.id = f.user_Id)
我正在使用两个具有一对多关系的 Postgres table。主要 table 称为用户,另一个 table 称为文件。
用户 table 有以下列:
id SERIAL PRIMARY KEY,
email VARCHAR(128) NOT NULL,
username VARCHAR(128) UNIQUE NOT NULL,
password_hash VARCHAR(128) NOT NULL
文件 table 有以下列:
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
title VARCHAR(128) NOT NULL,
url VARCHAR(128) NOT NULL
当我登录到我的应用程序时,我通过执行
查询要显示的所有文件cur.execute('SELECT * from files')
当我想要特定的用户文件时,我 运行
cur.execute('SELECT * from files where user_id = %i' % user_id)
对于获取所有文件的查询,我想对其进行调整,以便我也获得与每个文件关联的用户名。我应该如何调整我的执行语句来实现这一点?
尝试以下操作。我知道这种语法适用于其他 dbms':
cur.execute('SELECT f.*, u.username from files as f, users as u where u.id = f.user_Id)