Sql 使用已获得奖金的查询返回值

Sql 使用已获得奖金的查询返回值,sql,postgresql,Sql,Postgresql,我正在尝试将随机选择的transactionId授予奖金,这基本上就是将其奖励值加倍 以下是我的模式: CREATE TABLE rewards ( rewardId INTEGER PRIMARY KEY, rewardType VARCHAR(20), rewardValue NUMERIC(6,2) ); CREATE TABLE deposit ( depositId

我正在尝试将随机选择的transactionId授予奖金,这基本上就是将其奖励值加倍

以下是我的模式:

    CREATE TABLE rewards (  
        rewardId    INTEGER PRIMARY KEY,
        rewardType    VARCHAR(20), 
        rewardValue    NUMERIC(6,2)
    );

    CREATE TABLE deposit (   
        depositId    INTEGER PRIMARY KEY,
        depositDate    DATE, 
        customerId    INTEGER NOT NULL REFERENCES Customers
    );

    CREATE TABLE transactions (   
        transactionId    SERIAL PRIMARY KEY,
        depositId    INTEGER NOT NULL UNIQUE REFERENCES Orders,
        transactionAmount   NUMERIC(18,2)
    );
我的问题是:

    select distinct t.transactionId 
    from transactions t join deposit d on t.depositId = d.depositId join 
         rewards r on 2 * r.rewardValue <= t.transactionAmount;

我得到了一些输出,这些输出只是几个值反复出现。有人知道如何解决这个问题吗?

在回答您的问题之前,您的加入似乎有问题。 如果您希望找到符合奖励条件的交易 试试这个->

select distinct transactionId from
(select t.transactionId,r.rewardValue,t.transactionAmount
from transactions t join deposit d on t.depositId = d.depositId,rewards r ) tbl where  2*rewardValue <= transactionAmount

在回答您的问题之前,您的加入似乎有问题。 如果您希望找到符合奖励条件的交易 试试这个->

select distinct transactionId from
(select t.transactionId,r.rewardValue,t.transactionAmount
from transactions t join deposit d on t.depositId = d.depositId,rewards r ) tbl where  2*rewardValue <= transactionAmount

以表格式提供示例数据和预期输出您的查询中似乎缺少联接条件。请告诉我们这三个表是如何相互关联的。@TimBiegeleisen我用join编辑了这篇文章,它仍然重复相同的值,只是顺序不同,不能回答我的问题。@TimBiegeleisen我再次编辑了这篇文章。这就是您所指的吗?以表格式提供示例数据和预期输出您的查询中似乎缺少连接条件。请告诉我们这三个表是如何相互关联的。@TimBiegeleisen我用join编辑了这篇文章,它仍然重复相同的值,只是顺序不同,不能回答我的问题。@TimBiegeleisen我再次编辑了这篇文章。这就是你说的吗?