簡體   English   中英

如何在SQL Server 2008r2中的兩個表之間進行內部聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM