[英]how to do inner join between two tables in sql server 2008r2
我有兩張桌子:
questionbank table
qustion answer1 answer2 answer3 answer4 correct_ans sub_name
result table
username name correctanswer totalquestions percentage result sub_name
我想在這兩者之間執行內部聯接,以便從問題庫表中讀取結果並將結果存儲在結果表中,我在SQL Server 2008中的操作方式。請幫助。
我也有C#的代碼:
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(result.username) AS correct_ans
FROM result
INNER JOIN questionbank ON result.Q_id = questionbank.Q_id
AND result.User_Ans = questionbank.Correct_Ans
AND result.username = " + username + " ");
SqlCommand cmd1 = new SqlCommand(
@"SELECT COUNT(Q_id) AS totalquestions FROM questionbank";);
您所擁有的基本上是沒問題的(盡管r.username
應該是where
,而不是join
子句); 您確實應該參數化:
using(var cmd = new SqlCommand(@"
SELECT COUNT(r.username) AS correct_ans
FROM result r
INNER JOIN questionbank q ON r.Q_id = q.Q_id AND r.User_Ans = q.Correct_Ans
WHERE r.username = @username"))
{
cmd.Parameters.AddWithValue("username", username))
// use it; since it returns a single COUNT, we can probably use:
int correct = (int)cmd.ExecuteScalar();
//...etc
}
除此之外:應該沒問題。 如果沒有找到匹配項,請嘗試在SSMS中進行查詢,並確保在其前面添加以下內容:
declare @username nvarchar(200) = 'Fred';
(管他呢)。 當對諸如username
類的值進行過濾時,我立即想到的是“區分大小寫”-SQL Server可以區分大小寫或不區分大小寫:如果將其配置為區分大小寫,則'Fred'
與'fred'
或'FRED'
或'FrEd'
。
這將在運行時產生錯誤,因為在result.username之后,您必須像這樣result.username ='“ + username +”'來編寫它。 不要忘記在用戶名前后使用'char。 最好使用參數化查詢。 我認為您已經完成了內部聯接,還有其他問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.