2016-06-11 71 views
0

我使用兩個具有一對多關係的Postgres表。主表稱爲用戶,另一個表稱爲文件。查詢具有一對多關係的兩個表

用戶表有以下欄目:

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

的文件表有以下欄目:

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') 

,當我想要一個特定用戶的文件,我跑

​​

對於我的查詢獲取所有文件,我想調整它,以便我也獲得與每個文件關聯的用戶名。我應該如何定製我的執行聲明以實現這一目標?

+0

你問你應該如何將表連接在一起然後查詢它? – Nicarus

回答

0

請嘗試以下操作。我知道這個語法可以與其他dbms一起工作:

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

謝謝工作完美。所以'f。*'幾乎可以說查詢文件表中的所有內容? – Brosef

+0

就是這樣。所有'正在f'正在做的是爲該表提供別名,然後您可以在整個查詢中使用該別名。很高興我能幫上忙。 – JimmyB

+0

對於我的其他查詢場景,我有用戶ID可用,並希望用戶文件和用戶名,我試着調整你的代碼到'cur.execute('選擇f。*,u.username從文件作爲f,用戶作爲你在哪裏u.id =%i和f.user_id =%i'%(user_id,user_id))'。它可以工作,但是這是最好的方式嗎? – Brosef

相關問題