我有兩個表之一是受試者和的UserDetails列這兩個表:MS SQL內部聯接
Subjects
(REGNO,IndexNo,SUBJECT_1,Subject_23,Subject_3,Subject_4)和UserDetails
(姓名,出生日期,REGNO,地址,身份證)
我想Name
,DOB
,RegNo
,Address
,ID
從UserDetails
和指數從主題acoording到。我創建的查詢特定的主題,但它不工作_subject是字符串變量包含主題名稱
我有兩個表之一是受試者和的UserDetails列這兩個表:MS SQL內部聯接
Subjects
(REGNO,IndexNo,SUBJECT_1,Subject_23,Subject_3,Subject_4)和UserDetails
(姓名,出生日期,REGNO,地址,身份證)我想Name
,DOB
,RegNo
,Address
,ID
從UserDetails
和指數從主題acoording到。我創建的查詢特定的主題,但它不工作_subject是字符串變量包含主題名稱
你可能會想出解決在你自己,但你需要指定WHERE子句的每個部分,像這樣:
WHERE Subjects.Subject_1 = '"+_subject+"'"
OR Subjects.Subject_2 = '"+_subject+"'"
OR Subjects.Subject_3 = '"+_subject+"'"
OR Subjects.Subject_4 = '"+_subject+"'"
感謝我固定它,現在它的工作 – user2519850
你的where子句無效。
嘗試
WHERE
Subject_1 = '"+_subject+"'
OR Subject_2 = '"+_subject+"'
OR Subject_3 = '"+_subject+"'
OR Subject_4 = '"+_subject+"'"
我假設你_subject字符串已消毒和用戶不能只是使用它的SQL注入攻擊...
你是不是想匹配任何科目進行的UserDetails對存儲在一個字符串變量?
試試這個
DECLARE @subject varchar(20) = 'subjectstringvalue'; --variables are declared like this in T-sql
SELECT
ud.Name
,ud.DOB
,ud.RegNo
,ud.Address
,ud.ID
,s.IndexNo
FROM UserDetails AS ud
INNER JOIN Subjects AS s
ON ud.RegNo = s.RegNo
WHERE s.Subject_1 = @subject --variables are used like this in T-sql
OR Subject_2 = @subject
OR Subject_3 = @subject
OR Subject_4 = @subject
而不僅僅是創建一個簡單的存儲過程像下面並通過您的主體價值的參數。
CREATE PROC GetDetails
(
@Subject VARCHAR(10)
)
BEGIN
SELECT UserDetails.Name,UserDetails.DOB,
UserDetails.RegNo,UserDetails.Address, UserDetails.ID,
Subjects.IndexNo
FROM UserDetails
INNER JOIN Subjects ON UserDetails.RegNo = Subjects.RegNo
WHERE Subject_1 = @Subject
OR Subject_2 = @Subject
OR Subject_3 = @Subject
END
我不知道MS SQL,但「這裏的」部分這不是說服我 – BeNdErR