私はAPEXのオークションサイトで働いています。オークションサイトでは、誰かが購入した商品の概要を説明する必要があります。確かにそれは私が忘れていたものですが、次の状況で結果を取得するにはどうすればよいですか。
3つのテーブル
Table User
USER_ID
EMAIL
Table Product
PRODUCT_ID
USER_ID
Table Bid
BID_ID
PRODUCT_ID
USER_ID
CREDITS
もちろん、もっと多くの列がありますが、それらを省略すると、説明が少し簡単になると思います。
必要な結果
Productテーブルからの製品の表示。ただし、現在のユーザーが最高の入札単価(クレジット)を持っている場合に限ります。
ここのところ
私はこれについて多くのことを考え/試してきましたが、サブクエリの最後に殺され続けています。
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)からEmailadressを返します
ユーザーフィルタリングが正常に機能するため、実際の問題は「and」から始まります。サブクエリで比較された(現在の)PRODUCT_IDを取得する方法がわかりません。サブクエリの最後でその値を取得すれば、それは機能すると確信しています。
OracleDBでの作業。
助けていただければ幸いです:)