查询具有一对多关系的两个表

时间:2016-06-11 00:00:48

标签: postgresql psycopg2

我正在使用两个具有一对多关系的Postgres表。主表称为用户,另一表称为文件。

users表包含以下列:

id SERIAL PRIMARY KEY,
email VARCHAR(128) NOT NULL,
username VARCHAR(128) UNIQUE NOT NULL,
password_hash VARCHAR(128) NOT NULL

files表包含以下列:

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)

对于我提取所有文件的查询,我想调整它,以便获得与每个文件关联的用户名。我该如何定制执行语句来实现这一目标?

1 个答案:

答案 0 :(得分:1)

尝试以下方法。我知道这种语法适用于其他dbms':

cur.execute('SELECT f.*, u.username from files as f, users as u where u.id = f.user_Id)