从数据库连接 3 个表给我一个不明确的列名错误

Joining 3 tables from a database gives me an ambiguous column name error

我正在尝试连接 3 个表。现在我只是想 运行 在 sqlite3 CLI 中编写代码,但我的最终目标是 运行 我在 python 中的查询 .execute.

.schema 如下所示:

CREATE TABLE users (id INTEGER, 
    username TEXT NOT NULL,
    hash TEXT NOT NULL,
    cash NUMERIC NOT NULL DEFAULT 10000.00,
    PRIMARY KEY(id));
CREATE UNIQUE INDEX username ON users (username);

CREATE TABLE stocks (
    id INTEGER,
    symbol TEXT,
    PRIMARY KEY(id)
);
CREATE TABLE sqlite_sequence(name,seq);

CREATE TABLE transactions (
    id INTEGER NOT NULL UNIQUE,
    stockID INTEGER NOT NULL,
    quantity INTEGER NOT NULL,
    price FLOAT NOT NULL,
    userID INTEGER NOT NULL,
    PRIMARY KEY(id),
    FOREIGN KEY (userID) REFERENCES users(id),
    FOREIGN KEY (stockID) REFERENCES stocks(id)
);

我的查询在 python 中,看起来像这样:

SELECT users.username, transactions.id, stocks.symbol 
FROM users
INNER JOIN users ON users.id=transactions.userID
INNER JOIN transactions ON transactions.stockID=stocks.id;

这给了我一个 Error: in prepare, ambiguous column name: users.username (1)

我已经尝试 SELECT users.username FROM users; 并且它给了我所有的用户名。

当我尝试连接两个表时,我遇到了相同类型的错误。

我用 W3 来学习连接表,但我不明白我哪里出错了。

您以错误的方式编写了连接查询。我认为您只需要交换 table 的名称即可。会是这样

SELECT users.username, transactions.id, stocks.symbol 
FROM users
INNER JOIN transactions ON users.id=transactions.userID
INNER JOIN stocks ON transactions.stockID=stocks.id;

尝试运行这个查询。我希望它 运行 正确。