我是sql新手,請耐心等待。 我有兩個表,COURSES和RESPONSES有一個共同的字段userID。我正在製作一個網格視圖,它顯示COURSES表中的每個用戶可用courseName和RESPONSE表中的dateTaken。所以,我只是寫了查詢爲:從多個表中選擇值
SELECT c.*, r.*
FROM COURSES c, RESPONSE r
WHERE c.userID = @userID1 and r.userID = @userID1 and r.userResponse = NULL
<SelectParameters>
<asp:Parameter Name="userID1" Type="Int32" />
</SelectParameters>
<asp:GridView
ID ="gvAvailCourses"
runat ="server"
DataSourceID ="sdsAvailCourses"
Width ="100%"
DataKeyNames ="trainingCourseID"
PageSize ="10"
AllowPaging ="true"
EnablePersistedSelection="true"
OnRowCommand ="gvAvailCourses_RowCommand"
AutoGenerateColumns ="false">
<Columns>
<asp:BoundField DataField="trainingCourseID" HeaderText="Coursen ID" />
<asp:ButtonField ButtonType="Link" DataTextField="CourseName" CommandName="CourseName" HeaderText="Course Name" />
<asp:BoundField DataField="dateEntered" HeaderText="Last Taken" />
響應表可能會或可能不會有用戶響應的記錄,因此有可能是一個特定的用戶ID沒有記錄。
無論如何,我必須在我的網格視圖中顯示COURSES表中的任何couseName,而不管它在RESPONSE表中的值如何。如果RESPONSE表沒有該用戶的記錄,那麼網格視圖將僅顯示空白或對dateTaken列表示「尚未採取」。如果RESPONSE表中沒有記錄,我上面的查詢根本不顯示任何內容。 請幫忙。
謝謝!
爲什麼where子句? – 2010-11-11 16:10:30
,因爲他們在原來的查詢中有?試圖儘可能簡單地將其放入。沒有數據在我面前,並假設它有一些價值,而不是過濾器來模擬連接,我保留它。如果沒有必要,OP可以刪除它。 – 2010-11-11 16:18:12
感謝您的快速回復。還有一件事,RESPONSE表可能有重複的條目。我知道我可以使用DISTINCT,但那是整個表格。我如何使用RESPONSE表中的不同值,以便從RESPONSE中只選擇一條記錄。 – Ratan 2010-11-11 16:55:33