• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在子查询中获取Id

数据库 来源:Floris Velleman 18次浏览

我一直在APEX的拍卖网站上工作。对于拍卖网站,我需要做一个概述,说明哪些产品是由某人购买的。肯定它的只是我忘了,但我怎样才能获得结果在以下情况:在子查询中获取Id

3表

Table User 
USER_ID 
EMAIL 

Table Product 
PRODUCT_ID 
USER_ID 

Table Bid 
BID_ID 
PRODUCT_ID 
USER_ID 
CREDITS 

Ofcourse有更多的列,但我想,让他们出来,使explenation稍微容易。

最少报名结果

显示产品从产品表。但只有当前用户的出价最高(Credits)。

到目前为止

我一直在想/想在这一个了很多,但在子查询结束不断收到死亡。 (:APP_USER)

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从当前用户返回的emailadress

真正的问题在“和”为用户过滤工作正常启动。我不知道如何在子查询中获取比较(当前)的PRODUCT_ID。我很确定,如果我在子查询的末尾得到这个值,它就可以工作。

使用Oracle数据库。

任何帮助表示赞赏:)

===========解决方案如下:

尝试用这个..

SELECT * 
FROM PRODUCT p 
WHERE p.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" b 
         WHERE "CREDITS" = 
        (SELECT MAX("CREDITS") FROM "BID" 
         WHERE b.PRODUCT_ID" = p.product_id)); 

and "PRODUCT_ID" in (SELECT "PRODUCT_ID" FROM "BID" b 
         WHERE "CREDITS" = 
        (SELECT MAX("CREDITS") FROM "BID" 
         WHERE b.PRODUCT_ID" = p.product_id)) 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)