שאלה לתותחי SQL שבניכם - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה לתותחי SQL שבניכם


Da-Funk

Recommended Posts

אוקיי אז יש לי Stored Procedure הבאה: שילוב של כמה SELECT כדי למשוך נתונים ממס' טבלאות

- Auctions , Profile , Bids

עכשיו הבעיה היא שאם אף אחד לא עשה BID , הווה אומר השורה ב BID ריקה שאר הנתונים לא חוזרים , וזה מציק כי אני רוצה לקבל את הנתונים חזרה בין אם מישהו עשה BID ובין אם לא

הנה הפונקציה

 ALTER PROCEDURE dbo.wcbs_auction_summery
(
@AuctionID int
)
AS

SELECT x.*, y.* , z.*
FROM
(SELECT a.AuctionTitle , a.StartingPrice as 'Starting Bid' , a.BuyoutAmount as 'Buyout Price' , a.DatePublished ,datediff(day , getdate() , a.DateOfExpire) as 'Time till end' , a.DateOfExpire
, p.City , p.Country
FROM Auctions a
INNER JOIN ProfileTable_1 p
ON a.UserID = p.UserID
WHERE a.AuctionID = @AuctionID) x ,
(SELECT u.UserName as 'Highest Bidder' , max(b.BidAmount)as 'Current Bid'
FROM Bids b
INNER JOIN aspnet_Users u
ON b.UserID = u.UserID
WHERE b.AuctionID = @AuctionID
GROUP BY u.UserName) y ,
(SELECT count(*) as '# of Bids' FROM Bids WHERE AuctionID = @AuctionID) z

קישור לתוכן
שתף באתרים אחרים

אם הבנתי נכון:

תצרף לטבלה גם timestamp

ומתי שחוזרת שורה ריקה (כשאף אחד לא עשה BID)

פשוט שיחזיר את הנתונים האחרונים שהוכנסו(אותם תשלוף אחרי שתמיין את הטבלה לפי הtimestamp)

קישור לתוכן
שתף באתרים אחרים

היי

אני מכיר טוב SQL של אורקל, ומה שכתבת פה טיפה שונה (אני לא יודע בדיוק של איזה DATABASE זה).

בכל מקרה, באורקל יש מה שנקרא OUTER JOIN. אתה מוסיף סימן (+) מימין לתנאי , למשל

(+) where bid=2

זה מביא לך גם את הרשומות שבהן bid=null

אני לא יודע איך בדיוק התחביר ב DATABASE שלך, אבל אני מניח שגם בו יש אפשרות ל OUTER JOIN.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...