0

正如在这个问题(SQLite field with a list of foreign keys),我试图让我的房地产经纪人和列表与python SQLite数据库。基于另一个表的外键在一个表中的SQLite更新字段

我一样认为,现在有看起来像这样的表:

CREATE TABLE listings(
    listing_id  INTEGER PRIMARY KEY AUTOINCREMENT, 
    listing_address TEXT UNIQUE NOT NULL, 
    acq_date   DATE 
    agent_id   INTEGER, 
    FOREIGN KEY (agent_id) REFERENCES agent (agent_id) 
) 

CREATE TABLE agent(
    agent_id   INTEGER PRIMARY KEY AUTOINCREMENT, 
    agent_name  TEXT NOT NULL, 
    agent_last_request TEXT 
) 

我现在想根据从上市做过测算,以更新代理表。我的理论是,必须有一种单行数据库方式来使用另一个表的行中的外键来更新字段。我已经有这方面的工作,其实:

given my_listing_id 
given new_request_data 

"SELECT agent_id FROM listings WHERE listing_id = ?", (my_listing_id,) 
fetch etc.. 
"UPDATE agent SET agent_last_request = ? WHERE agent_id = ?", (new_request_data, agent_id) 

但在这样做的权利的兴趣,在我看来,应该有SQL的一行使用的外键更新另一个表。我试过这样的东西,但失败了:

"UPDATE agent, listings SET agent_last_request = ? WHERE agent.agent_id = listings.agent_id AND listings.agent_id = ?", (new_request_data, my_listing_id) 

那么,我有my_listing_id时如何更新agent_last_request?我应该继续这么做吗?

+0

你一定要告诉你假装什么。否则很难帮助你。 –

回答

0

要查找一个值,你可以使用标量子查询:

UPDATE agent 
SET agent_last_request = ? 
WHERE agent_id = (SELECT agent_id 
        FROM listings 
        WHERE listing_id = ?) 
+0

这是完美的!我不知道我可以像这样嵌套一个SQL查询! –

相关问题