我一直在 APEX 的一个拍卖网站上工作。对于拍卖网站,我需要做一个概述,显示某人购买了哪些产品。很确定这只是我忘记的东西,但是在以下情况下如何获得结果:
3 表
Table User
USER_ID
EMAIL
Table Product
PRODUCT_ID
USER_ID
Table Bid
BID_ID
PRODUCT_ID
USER_ID
CREDITS
当然还有更多的列,但我认为将它们排除在外会使解释稍微容易一些。
需要的结果
显示产品表中的产品。但前提是当前用户的出价最高(积分)。
至今
我一直在思考/尝试很多,但在子查询结束时一直被杀死。
SELECT *
FROM "PRODUCT"
WHERE "PRODUCT_ID" IN (SELECT "PRODUCT_ID" FROM "BID"
WHERE "USER_ID" =
(SELECT "USER_ID" FROM "USER"
WHERE lower("EMAIL") = lower(:APP_USER)))
and "PRODUCT_ID" = (SELECT "PRODUCT_ID" FROM "BID"
WHERE "CREDITS" =
(SELECT MAX("CREDITS") FROM "BID"
WHERE "PRODUCT_ID" = ?
*Apex 返回当前用户的邮箱地址 (:APP_USER)
真正的问题始于“和”,因为用户过滤工作正常。我不知道如何在子查询中获取比较的(当前)PRODUCT_ID。我很确定如果我在子查询结束时获得该值,它将起作用。
使用 Oracle 数据库。
任何帮助表示赞赏:)