My SQL query is spitting out 3000 queries when it should be spitting out 20, I’m using Oracle.
Here are the tables:
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)
and my query
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 TO_CHAR(sysdate,'DD-MON-YY')>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
FROM dbf12.bid b, dbf12.auction a
WHERE a.auctionnumber=b.auctionnumber
GROUP BY b.bidAmount
HAVING b.bidAmount= max(b.bidAmount)) THEN 'No Bids that meets the reserve'
ELSE 'Auction Still Open'
END
FROM
dbf12.item i, dbf12.auction a, dbf12.bid b;
It looks like you forgot the join criteria between dbf12.item, dbf12.auction, and dbf12.bid. This makes it essentially a cross product of the three tables, joining every row in each to every row in all the others.
Try something like this:
You can also say something like: