オラクルを使用してSQLステートメントをコーディングしますが、完全に理解していない/把握するのに苦労しているいくつかの宿題が与えられました(したがって、基本的なSQL手順/関数の優れたチュートリアル/リンクがあれば、それを歓迎します.
ここに質問があります
La Trobe e-Auction データベース システム内のアイテムのすべての名前、説明、および値を、オークションが既に終了している場合は「販売済み」、オークションが終了している場合は「入札なし」と表示する列とともにリストするストアド プロシージャオークションはすでに終了しているが、最低価格に達していない場合、「販売なし」の商品はすでに終了しており、入札は行われていません。
アイテムのオークションがまだ開かれている場合は「オークション中」
Item (itemNumber, itemName, itemDescription, itemValue, itemLocation,
categoryID, sellerUsername)
Auction (auctionNumber, currency, startDateTime, endDateTime, shippingTerms,
startBidAmount, reserveAmount, bidIncrementAmount, noOfItems, itemSold,
itemNumber feedbackDateAndTime, rating, comments, paymentDate, paymentid)
Bid (bidderUsername, auctionNumber, bidDateTime,bidAmount)
ここに私が考え出した理論がありますが、それをコーディングする方法に途方に暮れています。
status column - a)sold, closed and item is sold
b)no bid, auction is close and no bids
c)no sale, the auction is closed but reserve wasnt met
d)on auction, auction for the item is still open
a) if i.itemnumber=a.itemnumber and itemSold='y'
b) if a.auctionnumber != b.auctionnumber and systemdate>endDateTime
c) if sysdate>endDatetime and a.auctionnumber=b.auctionnumber
and reserveamount>select b.bidAmount
from bid where a.auctionnumber=b.auctionnumber
and b.bidAmount.max;
d) if itemSold ='n' and sysdate<endDateTime;
CREATE OR REPLACE PROCEDURE allItemStatus
AS
p_itemName Item.itemName%TYPE;
p_itemDescription Item.itemDescription%TYPE;
p_itemValue Item.itemValue%TYPE;
P_itemSold Auction.itemSold%TYPE;
BEGIN
SELECT i.itemName, i.itemDescription, i.itemValue, a.itemSold
INTO p_itemName, p_itemDescription, p_itemValue , p_itemSold
FROM dbf12.Item i, dbf12.Auction a
WHERE i.itemNumber=a.itemNumber
AND a.itemSold='Y';
DBMS_OUTPUT.PUT_LINE('Item Name: '||p_itemName);
DBMS_OUTPUT.PUT_LINE('Item Description: '||p_itemDescription);
DBMS_OUTPUT.PUT_LINE('Item Value: '||p_itemValue);
DBMS_OUTPUT.PUT_LINE('Item Sold: '||p_itemSold);
END allItemStatus;
どんな助けでも大歓迎です。私はほとんどすべてを書き留めていないことを知っていますが、これをどこに行けばよいかわかりません。
ここに私の現在のコードがあります、それは私のsysdate> a.enddattimeが好きではありません
SELECT
i.itemname,
i.itemdescription,
i.itemvalue,
CASE
WHEN i.itemnumber=a.itemnumber and a.itemSold='y' THEN 'Sold'
WHEN a.auctionnumber != b.auctionnumber and systemdate>endDateTime THEN 'No Bids on that closed auction'
WHEN TO_CHAR(sysdate,'DD-MON-YY')<a.endDatetime and a.auctionnumber=b.auctionnumber
and reserveamount>(
SELECT b.bidAmount
WHERE a.auctionnumber=b.auctionnumber
AND b.bidAmount.max) THEN 'No Bids that meets the reserve'
ELSE 'Auction Still Open'
END
FROM
dbf12.item i, dbf12.auction a, dbf12.bid b;