2013-03-31 81 views
0

我有三個表:嵌套子查詢從比拖表的更多選擇

Years (YearId,Year) 
Months (MonthID,Month) 
Date (DateID,YearID,MonthID) 
Client (CLientID,ClientName) 
Payment (PayID,ClientID,DateID,Amount) 

我想在DataGridView中填寫爲:

Client Name, Amount, Year, Month 

我用這個說法,但事實並非如此工作:

Select * From (select Year From Years Where YearID = (Select YearId From Date Where dateID = (Select DateID From Payment))),(Select Month From Months Where Monthid = (Select MonthID From Date Where dateID = (Select DateID From Payment))),(Select ClientName From Client Where ClientID = (Select ClientID From Payment),(Select amont From Payment) 
+0

請確定你得到一個錯誤信息「它不工作」 ..?此外,你說你有3張桌子,但你談論5!順便說一下,你有沒有聽說過'sql join'? – walther

回答

2

聽起來你只是希望用INNER JOINs

SELECT C.ClientName, 
    P.Amount, 
    Y.Year, 
    M.Month 
FROM Payment P 
    INNER JOIN Client C 
     ON P.ClientID = C.ClientID 
    INNER JOIN Date D 
     ON P.DateId = D.DateId 
    INNER JOIN Years Y 
     ON D.YearId = Y.YearId 
    INNER JOIN Months M 
     ON D.MonthId = M.MonthId 

JOINs良好的視覺表現見下文:

Visual representation of JOINS

+0

我認爲這是一個更好的解釋:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – abatishchev

+0

@sgeddes現在它的工作非常感謝你 –

+0

@ MohamedHmmam - np,很高興我能幫上忙! – sgeddes